2012-02-23 107 views
0

我在现有应用程序的选项卡中集成了cocos2d场景时遇到了一些麻烦。 我开发了使用cocos2d附带的Xcode模板的场景,它工作正常,但是当我尝试在现有的应用程序上加载相同的场景时,所有出来的都是黑屏。在UIKit应用程序中集成cocos2d

这是我运行代码当我加载链接到标签

-(void)viewDidLoad { 
     director = [CCDirector sharedDirector]; //declared in the header file 
     //declared in the header file, sized as whole screen minus the tab bar 
     coolview = [CCGLView viewWithFrame:CGRectMake(0,0, 320,321) pixelFormat:kEAGLColorFormatRGB56 depthFormat:0 preserveBackbuffer:NO sharegroup:nil multiSampling:NO numberOfSamples:0]; 
     [director setView:coolview]; 
     [self setView:coolview]; 
     [director setAnimationInterval:1.0/60]; 
     [director setDelegate:self]; 
     [director setProjection:kCCDirectorProjection2D]; 
     [director runWithScene:[HelloWorldLayer scene]]; 
     } 

任何想法,为什么我应该得到一个黑屏的UIViewController?我错过了什么?

HelloWorld图层中的代码被执行,对象被实例化,但看起来好像它们没有被渲染。

我碰到下面的反馈也:

OpenGL error 0x0501 in -[CCShaderCache loadDefaultShaders] 174 
OpenGL error 0x0501 in -[CCTextureAtlas initVAO] 167 
OpenGL error 0x0501 in -[CCDirector setView:] 308 
OpenGL error 0x0501 in -[CCTextureAtlas initVAO] 167 

,但我一直没能找到错误代码的含义。 我使用cocos2d的版本2

预先感谢任何帮助 卢卡

一个小更新:这个问题不会1.0.1版本的发生,与EAGLView更换CCGLView。 所以我认为这可能是这个版本的一个小错误。

不幸的是,我不能切换到1.0.1,因为我需要box2d v2.2的一些功能,只有使用cocos2d v2.0。 我想让box2d v2.2与cocos v1.0.1一起工作,但它变得非常难看!

任何人都知道我可以如何修复它在2.0或至少点我在正确的方向吗?问题在哪里?在CCDirector或CCGLView中?

感谢 卢卡

+0

在你的代码中看起来很腥的一件事是“[director runWithScene:[HelloWorldLayer scene]];” CCLayer没有场景属性。你为什么要把一个CCScene对象放在一个图层中?你的场景中是否有任何东西需要渲染?我在一个测试应用程序中尝试了你的代码,它完美地工作。 – 2012-07-12 17:54:28

回答

0

你必须有所有的cocos2d的初始化代码。 Cocos2D创建一个openGL渲染上下文,然后绘制到显示sprite。如果你看看coco的模板应用,在AppDelegate中,会有一些初始化的东西。

我甚至不确定是否有可能(如果它很容易)将cocos2d场景合并到现有的iOS应用程序中。

+0

将cocos2d场景合并到现有的iOS(或OS X)应用程序中是绝对有可能的。当然,您必须提取cocos2d源文件。 – Clay 2013-02-01 14:54:00

0

当你完成所有的初始化工作后,尼克布尔在谈论,你需要注意一件事情:cocos2d借鉴他自己的CCLayer。但是我认为这个图层和图层是所有UIView子类 - 都是一样的东西。如果您能够替代它们或以某种方式链接,您可以在视图中执行任意cocos2d工作人员。这应该是你的起点,祝你好运。

+0

我试过Nick Bull说过的,将所有内容从appdelegate复制到viewDidLoad,但没有任何改变。 你能详细说说你的建议吗?这似乎很有趣,但我不太明白。你能告诉我更多吗? – Luca 2012-02-23 16:43:12

+0

对不起,我不能说更多:我从来没有试图做你在做什么,这只是我的猜测。你看,cocos2d使用UIKit的许多特性,而不是干净的形式:它们中的很多(或者可能都是?)从UIKit中分类出来。可能吧,CCLayer也是。如果是这样,你可以尝试用cocos2d中的CCLayer替换UIView中的图层。我只是希望来自UIView的图层不受保护或其他... – SentineL 2012-02-23 17:14:20