切换场景时游戏冻结(Cocos2d)

时间:2014-08-11 18:25:46

标签: ios objective-c xcode cocos2d-iphone

当我第一次运行我的应用程序时,一切都很好,但是当我关闭它时(只需按下主页按钮,不关闭进程)并重新打开它,如果我点击任何改变场景的按钮,它就会冻结。背景音乐仍然播放,Xcode没有告诉我有任何错误,但整个屏幕被冻结,我按下的按钮被卡在突出显示的状态。 这是我使用的代码,导致它在关闭并重新打开后冻结:

[[CCDirector sharedDirector] replaceScene:[PlayScene scene]
                           withTransition:[CCTransition 
transitionPushWithDirection:CCTransitionDirectionLeft duration:0.5f]];

此外,这可能是由同一问题引起的。当我从具有动画的播放屏幕退出应用程序并重新打开时,动画已停止。我想我可以通过在应用程序处于非活动状态时暂停游戏来解决此问题。

更新:现在Xcode确实出错了。当应用程序关闭时,我在CCGLView.m类的swapBuffers方法中的以下行中得到EXC_BAD_ACCESS错误:

if(![_context presentRenderbuffer:GL_RENDERBUFFER])

1 个答案:

答案 0 :(得分:0)

一旦Xcode实际出错,我就能找到这个解决方案:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [[CCDirector sharedDirector] pause];
    [[CCDirector sharedDirector] stopAnimation]; // Add
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [[CCDirector sharedDirector] resume];
    [[CCDirector sharedDirector] startAnimation]; // Add
}