Является ли application: didFinishLaunchingWithOptions: действительно хорошим местом для инициализации cocos2d и его представления OpenGL ES? - PullRequest
3 голосов
/ 25 октября 2011

Шаблоны Cocos2d и обычные примеры проектов инициализируют представление Cocos OpenGL ES и другие вещи в applicationDidFinishLaunching / application: didFinishLaunchingWithOptions: метод. Что касается последнего метода, Руководство по программированию Apple iOS утверждает, что:

"Приложения, использующие OpenGL ES, не должны использовать этот метод для подготовки своих среда рисования. Вместо этого они должны отложить любой рисунок OpenGL ES вызывает метод applicationDidBecomeActive: ".

Итак, мой вопрос: действительно ли application: didFinishLaunchingWithOptions: действительно правильное место для инициализации cocos2d? или мы должны делать это в applicationDidBecomeActive:?

Если вы думаете, что applicationDidBecomeActive: это путь, каковы будут последствия в отношении фонового выполнения? то есть что мы должны сделать, чтобы избежать некой двойной инициализации, когда приложение выходит на передний план из неактивного?

Заранее спасибо

1 Ответ

1 голос
/ 25 октября 2011

Хороший вопрос… до сих пор 99,9% всех приложений cocos2d делают это так, как это делает cocos2d, и я не слышал ни об одной проблеме.

Поскольку Apple на самом деле не объясняет, почему это особенно важно для приложений OpenGL ES, я бы предположил следующее:

  • Приложения OpenGL ES, как правило, занимают относительно много времени для инициализацииих мнение.В частности, при загрузке большого количества активов.Это может привести к тому, что приложение будет убито системой, если это займет слишком много времени.Это означает, что первая сцена Cocos2D должна загружаться быстро, и, в частности, она не должна загружать все игровые ресурсы, если только загрузка первой сцены не отложена до applicationDidBecomeActive.Последний требует дополнительной проверки, чтобы убедиться, что другая сцена уже не запущена.
  • Приложения должны выполнять общие задачи в applicationDidBecomeActive.Как правило, это хороший совет, потому что некоторые настройки теперь могут меняться, пока приложение приостановлено.Например, пользователь может изменить язык устройства или войти в режим полета, и приложение должно ответить на него, когда оно снова станет активным.Некоторые изменения могут, в частности, повлиять на приложения OpenGL ES, например, перезагрузить все растровые шрифты, если пользователь изменил языковой стандарт с английского на японский.
...