从UIKit菜单重新启动cocos2d的场景

时间:2012-11-14 20:47:28

标签: cocos2d-iphone uikit

我有一个基于UIButtons的UIKit菜单,当我点击其中一个时,我正在发射一个cocos2D场景。我正在AppDelegate中设置CCDirector:

if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
    [CCDirector setDirectorType:kCCDirectorTypeDefault];
CCDirector *director = [CCDirector sharedDirector];
[director setAnimationInterval:1.0/60];
[director setDisplayFPS:YES];
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];

并在rootViewController(将保存我的EAGLView的viewController)中我在viewDidLoad方法中执行此操作:

 glView = [EAGLView viewWithFrame:self.view.bounds
                               pixelFormat:kEAGLColorFormatRGBA8    
                               depthFormat:0 

                    ];

glView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view insertSubview:glView atIndex:0];
[[CCDirector sharedDirector] setOpenGLView:glView];
CCScene *scene = [GameScene sceneWithParent:self];
[[CCDirector sharedDirector] runWithScene:scene];

我在MainMenuViewController中设置我的菜单,从中我将NavigationViewController推送到navigationController的堆栈中。这完美地运行,我的游戏开始没有问题。我还可以从RootViewController(它包含cocos2d场景)返回一个UIButton:- (IBAction)goBack { [self.navigationController popViewControllerAnimated:YES]; [[CCDirector sharedDirector] end];}

但是当我尝试重新加载我的游戏场景时,应用程序退出了。我尝试过这种方法:  restart CCDirector但是徒劳!我试图暂停CCDirector并重新启动动画,但也是徒劳的,我得到的错误与cocos2d的绘制方法有关!! 请帮忙

1 个答案:

答案 0 :(得分:0)

我刚刚解决了我的问题。因此,如果您尝试使用UINavigationController,则不必使用[[CCDirector sharedDirector] end],因为当rootController从堆栈中加载时,cocos2d world的所有场景都将被释放。但是如果你想要只删除子视图(不是孔控制器),你必须结束CCDirector!我的问题出现在我作为GameScene的孩子添加的单例类中,当我结束CCDirector时它仍然存在于内存中,因此我必须在重新创建游戏场景之前释放它。希望这很清楚。