1

我正在编写一个具有多个级别的 iPhone 游戏。在游戏过程中,用户可以使用菜单退出游戏并返回关卡选择屏幕。为此,我使用带有一系列 UIViewController 的 UINavigationController。当玩家选择退出时,从堆栈中弹出游戏视图并显示关卡选择菜单。游戏第一次运行良好,但如果玩家退出关卡然后尝试玩相同或另一个关卡,这会导致问题。

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

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

[[CCDirector sharedDirector] resume];

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

4

2 回答 2

3

当你的游戏视图控制器被弹出时,[[CCDirector sharedDirector] stopAnimation]它会被调用,所以在将你的游戏视图控制器再次推入堆栈后,你必须调用[[CCDirector sharedDirector] startAnimation].

希望这可以帮助。

于 2012-10-02T07:51:11.543 回答
0

我会这样尝试:

[self resumeSchedulerAndActions];
    for(CCSprite *sprite in [self children]) {
        [[CCActionManager sharedManager] resumeTarget:sprite];
    }
于 2012-06-22T17:07:14.920 回答