6

これを適切に修正するのを手伝ってくれる人は誰でも、100ポイントの賞金を獲得できます!!!

私のアプリケーションでは、UIKitとCocos2Dを一緒にミキシングしており、addSubviewとremoveFromSuperviewの呼び出しを使用していくつかの単純なカスタムビューアニメーションを実行しています。最近、Cocos2Dで簡単に処理できる複雑なUIKitコードを取り除くために、アプリに別のCCSceneを追加する必要がありました。だから私は私のアプリにベースビューを持っています、それはそれにいくつかのボタンがあるUIViewControllerです。これらのボタンの後ろには、Cocos2Dが何でも実行するCCGLViewがあります。それはうまくいきます。次に、 2番目のViewControllerに移動したいとき(これをゲームビューと呼びましょう)ビューアニメーションを実行した後、viewdidloadが呼び出され(ディレクターの初期化は2番目のCCScene用です)、何も起こらないか、コンソールで以下のようなエラーが発生します。私の元のプロジェクトでは、以下のエラーが発生しますが、このサンプルプロジェクトでは何も起こりません。これらはエラーです:

OpenGL error 0x0501 in DrawSolidPolygon 104
OpenGL error 0x0502 in DrawSolidPolygon 104
OpenGL error 0x0501 in -[CCTextureAtlas drawNumberOfQuads:fromIndex:] 556
OpenGL error 0x0502 in -[CCTextureAtlas drawNumberOfQuads:fromIndex:] 556
OpenGL error 0x0502 in -[CCTextureAtlas drawNumberOfQuads:fromIndex:] 556
OpenGL error 0x0501 in -[CCParticleSystemQuad postStep] 411
OpenGL error 0x0506 in -[CCSprite draw] 532
OpenGL error 0x0502 in -[CCParticleSystemQuad draw] 434
OpenGL error 0x0502 in -[CCSprite draw] 532
OpenGL error 0x0502 in -[CCSprite draw] 532

元のプロジェクトで1つのシーンがあったとき、このようなことは何も起こりませんでしたが、2つのCCScenesを使用している場合にのみ発生します。したがって、サンプルプロジェクトのコードは、私の元のプロジェクトのほとんどのコピーであるため、そこに何か問題があると、ここで問題を修正し、OpenGLエラーを取り除くことができます。

さらに数時間テストして情報を収集した後、私の問題はiOSと複数のOpenGLビューに似ているようです。私はこのリンクも見ました:http://gamesfromwithin.com/using-multiple-opengl-views-and-uikit。ただし、Cocos2Dに関連付ける方法がわからないため、これらのリンクはどちらも私には意味がありません。この問題全体がCocos2Dの現在のバージョンの制限だと思いますが、誰かが私のプロジェクトをダウンロードして、過去2つのリンクの修正をプロジェクトに適用し、完全に修正できれば、それは素晴らしいことであり、私のすべての問題を修正するでしょう!

これで、私のプロジェクトのCocos2Dのバージョンは、2.0バージョンでダウンロードできる最新のバージョンになりました。誰かがプロジェクトをダウンロードして、私が間違っていることを確認するのに十分な人がいれば、これは私と私のような問題を経験している他の人にとって問題を解決すると思います。

以下のリンクは、私の問題のあるサンプルプロジェクトのダウンロードリンクです: http ://www.gogofile.com/Default.aspx?p = sc&ID = 634818635814123750_4340

9/3/12の時点で更新されています。現在、iOS用のCocos2Dの主な作成者である@riqに連絡することを考えています。ただし、そうする前に、CCGLViewを1つだけにする方法はなく、技術的には2つのビューを使用せず、コントローラー間で1つの共有ビューになるため、任意のUIViewControllerに配置できることを誰もが確信しています。この方法は可能ですか?

4

2 に答える 2

5

さて、私はほとんど3つのオプションがあることがわかりました:

1. @Riqによると、複数のCCDirectorのサポートは、2013年5月にリリースされるバージョン2.2で行われる予定です。したがって、2.2ベータ版がリリースされるまで待機中のゲームをプレイしてください。アップデート:2.1ファイナルは6月中旬からリリースされているので、2.2ベータ版は1、2か月以内にリリースされるはずです。

2.CCGLViewを保持するUIViewControllerが1つだけあります。次に、glViewが必要なUIViewControllerはすべてaddChildViewController(iOS 5以降)使用し、ビューを切り替えるときにそのUIViewControllerを保持し、その時点でもreplaceSceneを実行します(おそらくUIViewアニメーション完了コールバックで)。この方法でもうまくいくと思いますが、その効率はわかりません

編集:私はこのソリューションを使用して完全にテストしましたが、うまく機能しているようです。2.2が出るまでこれを行うことをお勧めします。私のアプリは60FPSで動作し、見栄えがします。

3.私は個人的にこれらのリンク/プルリクエストを試したことがなく、@ Riqも持っていないので、これが私の最後のオプションになります。http://www.cocos2d-iphone.org/forum/topic/33480およびhttp://www.cocos2d-iphone.org/forum/topic/17821

于 2012-09-07T04:07:18.390 に答える
0

Directorは1つのglビューのみをサポートします。やりたいことは、glビューのスクリーンショットを取得して、他のuiviewと遷移できるuiviewを作成し、1つの真のディレクターでシーンを変更してから、元に戻すなどのトリックです。

複数のビューのサポートは現在進行中ですが、おそらく数か月はオフになっています。

于 2012-08-31T00:01:53.477 に答える