3

Cocos2d テンプレートと通常のサンプル プロジェクトは、cocos openGL ES ビューとその他のものを applicationDidFinishLaunching / application:didFinishLaunchingWithOptions: メソッドで初期化します。最後の方法に関して、Apple iOS プログラミング ガイドには次のように記載されています。

「OpenGL ES を使用するアプリは、このメソッドを使用して描画環境を準備するべきではありません。代わりに、アプリケーションの OpenGL ES 描画呼び出しを applicationDidBecomeActive: メソッドに延期する必要があります。」

それで、私の質問は、application:didFinishLaunchingWithOptions: は本当に cocos2d を初期化する適切な場所ですか? または、applicationDidBecomeActive: でそれを行う必要がありますか?

applicationDidBecomeActive: が進むべき道だと思う場合、バックグラウンド実行に関連してどのような結果になるでしょうか? つまり、アプリが非アクティブ状態からフォアグラウンドになったときに、一種の二重初期化を回避するにはどうすればよいでしょうか?

前もって感謝します

4

1 に答える 1

1

良い質問です…これまでのところ、すべてのcocos2dアプリの99.9%が、cocos2dと同じように動作しており、1つの問題について聞いたことがありません。

Appleは、これがOpenGL ESアプリにとって特に重要である理由を実際には説明していないので、次のように想定します。

  • OpenGL ESアプリは、ビューを初期化するのに比較的長い時間がかかる傾向があります。特に多くのアセットをロードする場合。これにより、時間がかかりすぎると、アプリがシステムによって強制終了される可能性があります。つまり、Cocos2Dの最初のシーンは高速に読み込まれる必要があります。特に、最初のシーンの読み込みがapplicationDidBecomeActiveに延期されない限り、ゲームのすべてのアセットが読み込まれることはありません。後者では、他のシーンがすでに実行されていないことを確認するために追加のチェックが必要です。
  • アプリは、applicationDidBecomeActiveで一般的なタスクを実行することになっています。アプリが一時停止されている間に一部の設定が変更される可能性があるため、これは一般的に良いアドバイスです。たとえば、ユーザーがデバイスの言語を変更したり、機内モードに入ったりすると、アプリは再びアクティブになったときにそれに応答する必要があります。ユーザーがロケールを英語から日本語に変更した場合にすべてのビットマップフォントを再読み込みするなど、一部の変更は特にOpenGLESアプリに影響を与える可能性があります。
于 2011-10-25T13:14:43.723 に答える