Мое приложение использует Cocos2D для анимации и 2D-рендеринга, но "игровое лобби" (это не то, чем оно является, но для всех намерений и целей) все это стандартный UIView
/ UIKit
код.
У меня есть подкласс UIViewController
, основной вид которого установлен в файле XIB как EAGLView
. Когда я помещаю весь код загрузки Cocos в viewDidLoad
, все работает, как и ожидалось, за исключением того, что происходит замораживание на 1-2 секунды, пока Cocos загружает все мои текстуры.
У меня есть около 20 текстур, которые я предварительно загружаю в CCSpriteFrameCache
перед запуском моей сцены, поэтому моя анимация сразу становится плавной.
Я пытался переместить этот код загрузки текстуры в метод init
моего контроллера представления - но когда я пытаюсь это сделать, Cocos вылетает, по-видимому, из-за отсутствия контекста OpenGL для работы.
Я хочу, чтобы при отображении основного вида UIViewController
(без блокировки основного потока) я хотел бы загружать текстуры в фоновом режиме, а затем по окончании переходить между ними * 1017. * и OpenGL EAGLView
.
Я знаю, что сейчас в Cocos есть вызов addImageAsync:
, так что на самом деле это просто вопрос как-то "обойти закадровый EAGLView / EAGLContext", чтобы я мог в конечном итоге придерживаться Cocos, когда я готов отобразить это представление .
У кого-нибудь есть указания на элегантное решение этой проблемы?