2011-10-25 3 views
3

Cocos2dテンプレートと通常のサンプルプロジェクトは、applicationDidFinishLaunching/application:didFinishLaunchingWithOptions:メソッドでcocosのOpenGL ESビューなどを初期化します。 OpenGL ESを使用するアプリは、自分の 描画環境を準備するために、このメソッドを使用してはならないapplication:didFinishLaunchingWithOptions:本当にcocos2dとそのOpenGL ESビューを初期化するには良い場所ですか?

」その代わり、彼らはapplicationDidBecomeActiveに 呼び出しを描くどんなのOpenGL ESを延期する必要があります。:最後の方法に関連して、Apple iOS Programming Guideは、と述べています方法。"

だから、私の質問は、アプリケーションがあるさ:didFinishLaunchingWithOptions:本当にcocos2dを初期化する適切な場所は? applicationDidBecomeActiveでこれを行う必要がありますか?

もしあなたがapplicationDidBecomeActive:が行く方法だと思うのであれば、バックグラウンドの実行との関係はどうなりますか?アプリがフォアグラウンドになっていない状態になると、一度の二重初期化を避けるために何をすべきですか?事前

+0

+1良いキャッチ!私はあなたがこれをcocos2d公式フォーラム/バグトラッカーに報告し、開発者にコードを修正させてもらいたいと思います:) – Lukman

答えて

1

良い質問で

おかげで...これまでのところ、すべてのcocos2dのアプリケーションの99.9%はそれをcocos2dはそれをしない方法を行うと、私は一つの問題を聞いていません。

これは、OpenGL ESのアプリのために特に重要である理由Appleが実際に説明していないので、私は次の前提となります

  • のOpenGL ESのアプリは、彼らの見解を初期化するために、比較的長い時間がかかる傾向にあります。特に多くの資産を積み込むときこれは、アプリが長すぎるとシステムによって殺される可能性があります。つまり、最初のシーンの読み込みがapplicationDidBecomeActiveに延期されない限り、Cocos2Dの最初のシーンは高速に読み込まれます。特に、すべてのゲームのアセットを読み込むべきではありません。後者は、既に実行中のシーンがないことを確認するために追加のチェックが必要です。
  • アプリケーションは、applicationDidBecomeActiveで一般的なタスクを実行することになっています。これは、アプリが中断されている間に一部の設定が変更される可能性があるため、一般的には良いアドバイスです。たとえば、ユーザーがデバイスの言語を変更したり、飛行機モードに入ると、アプリが再びアクティブになったときに応答する必要があります。いくつかの変更は、特にOpenGL ESアプリケーションに影響を与える可能性があります。たとえば、ユーザーがロケールを英語から日本語に変更した場合は、すべてのビットマップフォントを再読み込みします。
関連する問題