Cocos2d - 第二次运行场景不安排更新
Posted
技术标签:
【中文标题】Cocos2d - 第二次运行场景不安排更新【英文标题】:Cocos2d - running a scene a second time doesn't schedule updates 【发布时间】:2013-03-14 00:13:06 【问题描述】:从 UIKit ViewController 我这样做是为了开始游戏:
if (director.runningScene == nil)
[director runWithScene:[MyGameLayer scene]];
[director startAnimation];
MyGameLayer 如下所示:
+(id) scene
CCScene *scene = [CCScene node];
MyGameLayer* layer = [MyGameLayer node];
[scene addChild:layer z:0 tag:GameSceneLayerTagGame];
return scene;
-(id) init
if ((self=[super init]))
NSLog(@"init!");
self.isTouchEnabled = YES;
[self initPhysics];
[self scheduleUpdate];
return self;
第一次玩游戏,一切正常。 -(void) update: (ccTime) dt
被调用。如果我退出游戏并执行此操作:
CCDirectorios* director = (CCDirectorIOS*)[CCDirector sharedDirector];
[director stopAnimation];
[director end];
然后再次玩游戏,-(void) update: (ccTime) dt
不会被调用,即使我知道 -init()
会被调用。游戏出现在屏幕上,但更新计划第二次不起作用。什么会导致 Cocos2d 不安排更新,我该如何解决?
【问题讨论】:
【参考方案1】:假设您正在做您正在做的事情以防止导演在后台工作时以 4 fps 更新,您可能应该尝试再次启动导演。
话虽如此,在你的 applicationDidBecomeActive 中,添加以下代码
[[CCDirector sharedDirector] stopAnimation]; // call this to make sure you don't start a second display link!
[[CCDirector sharedDirector] resume];
[[CCDirector sharedDirector] startAnimation];
取自:How to implement pause/resume in cocos2d game?
如果我不正确,请告诉我您要如何处理您的主管电话
【讨论】:
我有一个视图控制器,它有多个迷你游戏可供选择。所以我需要能够退出一场比赛并开始另一场比赛。问题是更新调度程序只适用于我玩的第一场比赛。同一游戏或任何其他游戏的任何后续播放都不会出现动画。【参考方案2】:您是否覆盖(实现)onEnter*
/onExit*
方法之一?如果是这样,请确保调用超级实现,否则调度和触摸输入可能不起作用。
更新: 除此之外,尽量不要调用 [director end],因为它会完全关闭 cocos2d,这是已知的问题。
【讨论】:
如果我不调用[director end],我第二次开始游戏时我会得到一个粉红色的屏幕。紧接着是层出不穷的openGL错误:OpenGL error 0x0501 in -[CCSprite draw] 532【参考方案3】:终于想通了。在游戏中打开带有退出按钮的菜单时,我正在暂停游戏:
[[self gameLayer] pause];
所以当我开始一个新游戏时,Cocos2d 仍然处于暂停状态,即使场景和图层被释放并且我正在创建一个新的 glView。
如果我使用它,它会起作用:
[[self gameLayer] pauseSchedulerAndActions];
【讨论】:
【参考方案4】:当您使用此代码“暂停”游戏时:
[[CCDirector sharedDirector]pause];
在推送任何场景之前,您还必须在重启或菜单代码块中“恢复”您的导演:
[[CCDirector sharedDirector]resume];
【讨论】:
以上是关于Cocos2d - 第二次运行场景不安排更新的主要内容,如果未能解决你的问题,请参考以下文章
当用户第二次打开 cocos2d-iphone 时,如何更改第一个场景?
如何捕获同时包含 cocs2d 和 UIKit 的视图的屏幕截图