弹出并推送视图后Cocos2D不会更新

时间:2012-06-18 20:14:32

标签: iphone uiviewcontroller cocos2d-iphone

我正在写一款有许多关卡的iPhone游戏。在游戏期间,用户可以使用菜单退出游戏并返回到水平选择屏幕。为此,我使用了一系列UIViewControllers的UINavigationController。当玩家选择退出时,将从堆栈中弹出游戏视图并显示级别选择菜单。游戏第一次运行正常,但如果玩家退出关卡然后尝试播放相同或其他级别,则会导致问题。

游戏视图控制器(显示cocos2d场景)是游戏控制器单例的成员变量。当用户点击“再次播放”时,该游戏控制器重置游戏状态。 cocos2d图层被清除,游戏重置为它的开始状态。在此之后,游戏视图再次被推入堆栈。但是这次cocos2d没有更新。屏幕只是上一个游戏冻结的最后一帧。

似乎由于某种原因,当弹出cocos2d视图然后按下它时它会停止更新,即使我使用:

[[CCDirector sharedDirector] resume];

有没有人有过这个问题的经验以及如何避免这个问题?

2 个答案:

答案 0 :(得分:3)

当您的游戏视图控制器弹出时,[[CCDirector sharedDirector] stopAnimation]被调用,因此在将游戏视图控制器再次推入堆栈后,您必须调用[[CCDirector sharedDirector] startAnimation]

希望这有帮助。

答案 1 :(得分:0)

我会这样尝试:

[self resumeSchedulerAndActions];
    for(CCSprite *sprite in [self children]) {
        [[CCActionManager sharedManager] resumeTarget:sprite];
    }