我正在写一款有许多关卡的iPhone游戏。在游戏期间,用户可以使用菜单退出游戏并返回到水平选择屏幕。为此,我使用了一系列UIViewControllers的UINavigationController。当玩家选择退出时,将从堆栈中弹出游戏视图并显示级别选择菜单。游戏第一次运行正常,但如果玩家退出关卡然后尝试播放相同或其他级别,则会导致问题。
游戏视图控制器(显示cocos2d场景)是游戏控制器单例的成员变量。当用户点击“再次播放”时,该游戏控制器重置游戏状态。 cocos2d图层被清除,游戏重置为它的开始状态。在此之后,游戏视图再次被推入堆栈。但是这次cocos2d没有更新。屏幕只是上一个游戏冻结的最后一帧。
似乎由于某种原因,当弹出cocos2d视图然后按下它时它会停止更新,即使我使用:
[[CCDirector sharedDirector] resume];
有没有人有过这个问题的经验以及如何避免这个问题?
答案 0 :(得分:3)
当您的游戏视图控制器弹出时,[[CCDirector sharedDirector] stopAnimation]
被调用,因此在将游戏视图控制器再次推入堆栈后,您必须调用[[CCDirector sharedDirector] startAnimation]
。
希望这有帮助。
答案 1 :(得分:0)
我会这样尝试:
[self resumeSchedulerAndActions];
for(CCSprite *sprite in [self children]) {
[[CCActionManager sharedManager] resumeTarget:sprite];
}