2012-02-23 14 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.

感謝を使用してい ルカ

少しアップデート:この問題はEAGLViewでCCGLViewを交換、バージョン1.0.1で発生しません。 これは、このリリースの小さなバグかもしれないと私は仮定します。

残念ながら、私はcocos2d v2.0にのみ付属するbox2d v2.2のいくつかの機能が必要なので、1.0.1に切り替えることはできません。 私はbox2d v2.2をcocos v1.0.1で動作させようとしていますが、かなり醜いです!

誰かが2.0で修正する方法、または少なくとも正しい方向に向ける方法を知っていますか?どこに問題がありますか? CCDirectorまたはCCGLViewでは?

おかげで ルカ

+0

あなたのコードで怪しいと思われるものは、 "[director runWithScene:[HelloWorldLayer scene]];"という行です。 CCLayerにはシーンプロパティはありません。 CCSceneオブジェクトをレイヤー内に配置する理由は何ですか?実際にあなたのシーンに何かレンダリングがありますか?私はテストアプリケーションであなたのコードを試して、それは完全に働いた。 –

答えて

0

あなたにも、すべてのCocos2Dの初期化コードを持っている必要があります。 Cocos2Dは、スプライトを表示するために描画されるOpenGLレンダリングコンテキストを作成します。ココスに付属しているテンプレートアプリケーションを見ると、AppDelegateには初期化の負荷があります。

既存のiOSアプリにcocos2dシーンを組み込むことが可能かどうか(またはそうであれば簡単なのかどうか)はわかりません。

+0

cocos2dシーンを既存のiOS(またはOS X)アプリに組み込むことは間違いありません。もちろん、cocos2dのソースファイルを取り込む必要があります。 – Clay

0

Nick Bullが話しているすべての初期化作業を済ませたら、cocos2dが自分のCCLayerで描画することに注意する必要があります。しかし、私はこの層と、すべてのUIViewサブクラスにあるレイヤーは同じものだと思います。あなたがそれらを再構築する方法や、どういうわけかリンクすれば、あなたの意見にcocos2dのスタッフをやることができます。これはあなたにとって幸運の出発点です。

+0

私は、Nick Bullが言ったことを試み、appdelegateからviewDidLoadまですべてをコピーアンドペーストしましたが、何も変わりませんでした。 提案したことを詳しく説明できますか?面白いようですが、よく分かりません。あなたは私にもっと教えてくれますか? – Luca

+0

申し訳ありませんが、私ははるかに伝えることはできません:私はあなたがやっていることをやろうとはしなかった、これは私の推測です。ご覧のとおり、cocos2dは、UIKitの多くの機能を使用しています。クリーンな形式ではなく、UIKitからサブクラス化された機能の多く(あるいは、すべてであるかもしれません)。 CCLayerもサブラインされるかもしれません。そうであれば、UIViewのレイヤーをcocos2dのCCLayerに置き換えることができます。私はUIViewからのレイヤーが保護されていないか何かを望んでいます... – SentineL

関連する問題