我有一个非常简单的游戏,使用Xcode v4.2.1,Cocos2d v5.0.1。我在Xcode中尝试了两个编译器(LLVM GCC 4.2和Apple LLVM编译器3.0。是否有偏好?)在游戏屏幕上是一个UIKit按钮,向用户显示Interface Builder(笔尖)设置/选项屏幕以进行自定义游戏有点。这完全基于我在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 * scene ...是另一个尝试从场景中获取图层对象的失败尝试,以便我可以调用userSettings方法,然后游戏层可以将其同化到游戏中。
答案 0 :(得分:1)
好的,所以我找到了一些可以缓解我的问题。
如果有人对此有所了解,请告诉我。我将继续使用此修复,除非我听到一个比我更了解的人的理由(这并不困难)。
在下面的讨论结束时,“psionic”的评论中找到了解决方案: http://www.cocos2d-iphone.org/forum/topic/7068
基本上,我在EAGLView类(EAGLView.m)中创建了一个静态bool,它围绕着layoutSubViews成员函数中对_resizeFromLayer的调用。对_resizeFromLayer的调用仅在第一次调用时调用,然后再调用。
请阅读上述讨论,让我知道您对此解决方案的喜欢/不喜欢,除了显而易见的......这是一个黑客攻击。
黑客,有效。我想。
答案 1 :(得分:1)
我有类似的问题。我已经将cocos2d与UIKit集成在一起。我添加了adMob。当用户点击展示Google BrowserView的广告时,会出现此问题。如果您使用完成按钮关闭视图,该应用程序工作正常。但是,如果用户在浏览器视图中按下主页按钮,并恢复应用程序,我也会遇到相同的异常。
OpenGL error 0x0506 in -[EAGLView swapBuffers]
显示UIKit按钮和广告,但它不会渲染cocos2d图层。
我从https://github.com/cocos2d/cocos2d-iphone/pull/198获得了解决方案,但我没有更改cocos2d源代码。相反,我在AppDelegate.m中添加了一个名为isAnimating的布尔值,并将该属性公开给了图层。
要解决此问题,我在进入谷歌浏览器视图之前在CCDirector上停止动画。并在恢复到应用程序后启动动画。 isAnimating ivar用于检查启动动画是否未被调用两次。
希望它有所帮助,
答案 2 :(得分:0)
在通过CCGLView实现Cocos2D时,我的应用程序中出现了类似的错误。
对我有用的解决方案是打电话
[[CCDirector sharedDirector] popScene]
展示Interface Builder Viewcontroller。