Cocos2d在iPad上失败,但在模拟器中工作



我有一个非常简单的游戏,使用Xcode v4.2.1,Cocos2d v5.0.1。我在Xcode中尝试过这两种编译器(LLVM GCC 4.2和Apple LLVM编译器3.0)。有偏好吗?)游戏屏幕上有一个UIKit按钮,它为用户提供了一个界面生成器(nib)设置/选项屏幕,以自定义游戏。这一切都是基于我在Ray Wenderlich的教程中学到的(http://www.raywenderlich.com/4817/how-to-integrate-cocos2d-and-uikit)。

用户做出更改后,他们将返回到游戏中,并且更改已到位。

这一切都可以在模拟器中按照我的意愿进行,然而,当我在iPad上测试游戏时,我在调试窗口中出现了以下错误:

2012-01-27 18:25:27.305 BonkBonk[1082:707] failed to call context
2012-01-27 18:25:27.310 BonkBonk[1082:707] cocos2d: surface size: 1024x768
2012-01-27 18:25:27.316 BonkBonk[1082:707] Failed to make complete framebuffer object 8cdd
OpenGL error 0x0506 in -[EAGLView swapBuffers]
OpenGL error 0x0506 in -[EAGLView swapBuffers]
OpenGL error 0x0506 in -[EAGLView swapBuffers]

OpeenGl的错误无限期地继续。

我使用viewWillAppear功能来捕捉设置/选项屏幕的返回,以便将新设置传递到游戏层。如果我注释掉这个代码,问题就会消失,但是,我无法将新的用户设置添加到游戏层。

这是代码:

- (void) viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:YES animated:animated];
    //CCScene *scene = [[CCDirector sharedDirector] runningScene];
    CCScene *scene = [BonkBonkLayer scene];
    id layer = [scene getChildByTag:1];
    [layer userSettings];
    [super viewWillAppear:animated];
}

评论行//CCSene*场景。。。是另一次从场景中获取层对象的失败尝试,这样我就可以调用userSettings方法,然后游戏层可以将其吸收到游戏中。

好吧,所以我找到了一些可以缓解问题的方法。

如果有人知道这件事,请告诉我。我会继续使用这个修复程序,除非我从比我自己更了解的人那里听到原因(这并不难)。

在以下讨论结束时,"灵能"在评论中找到了解决方案:http://www.cocos2d-iphone.org/forum/topic/7068.

基本上,我在EAGLView类(EAGLView.m)中创建了一个静态布尔,它围绕着layoutSubViews成员函数中对_resizeFromLayer的调用。对_resizeFromLayer的调用只在第一次到第二次调用,然后再也不会调用。

请阅读上面的讨论,让我知道你喜欢/不喜欢这个解决方案,除了明显的。。。这是一次黑客攻击。

一个黑客,这是有效的。我想。

我也遇到了类似的问题。我已经将cocos2d与UIKit集成在一起。我添加了adMob。当用户点击显示谷歌浏览器视图的广告时,问题就会出现。如果使用"完成"按钮关闭"视图",则应用程序工作正常。然而,如果用户在浏览器视图中按下主页按钮,然后恢复应用程序,我会得到同样的异常。

OpenGL error 0x0506 in -[EAGLView swapBuffers]

显示了UIKit按钮和Ads,但它没有渲染cocos2d层。

我从https://github.com/cocos2d/cocos2d-iphone/pull/198,但我没有更改cocos2d的来源。相反,我在AppDelegate.m中添加了一个名为isAnimating的布尔ivar,并将该属性公开给Layers。

为了解决这个问题,我在进入谷歌浏览器视图之前停止CCDirector上的动画。并在应用程序恢复后开始动画。isAnimating ivar用于检查启动动画是否未调用两次。

希望有帮助,

在通过CCGLView实现Cocos2D时,我的应用程序中也出现了类似的错误。

对我有效的解决方案是打电话给

[[CCDirector sharedDirector] popScene]

当呈现界面生成器视图控制器时。

最新更新