我有一个基于 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 中设置我的菜单,从那里我将 RootViewController 推送到 navigationController 的堆栈中。这非常有效,我的游戏开始时没有问题。我也可以从 RootViewController (包含 cocos2d 场景)返回 UIButton:- (IBAction)goBack {
[self.navigationController popViewControllerAnimated:YES];
[[CCDirector sharedDirector] end];}
但是当我尝试重新加载我的游戏场景时,应用程序退出了。我试过这个方法: 重启CCDirector但徒劳!!我试图暂停 CCDirector 并重新启动动画,但也是徒劳的,我得到的错误与 cocos2d 的绘制方法有关!请帮忙