У меня есть игра cocos2d
, в которой есть сцена загрузки, в которой мы загружаем кучу ассетов. Игра начинается с заставки, а затем запускает сцену загрузки. Сцена загрузки начинается с загрузки фона, поэтому пользователь видит фон сцены загрузки во время загрузки ресурсов.
Я загружаю фон сцены загрузки, вызывая CCSprite::spriteWithFile:
и передавая путь к файлу: loadingbackground.pvr.ccz
На разных устройствах работает по-разному:
- На симуляторе iphone (3gs) я вижу сцену загрузки, как и ожидалось.
- На симуляторе iphone retina я не вижу сцены загрузки (пока не так много ресурсов, поэтому это может происходить быстро), и она переходит прямо к сцене главного меню.
- На устройстве ipad 3 появляется заставка, затем полсекунды черного экрана, а затем появляется сцена главного меню.
Я хочу посмотреть, что я могу сделать, чтобы избежать появления черного экрана на iPad 3. Я подозреваю, что это из-за времени, необходимого для загрузки фона загрузки.
Я пробовал следующие оптимизации (в основном на основе запись в блоге об оптимизации памяти):
- Фон загрузки (изначально 2,3 МБ png-файл RGB8) перемещен в таблицу спрайтов pvr.ccz, что уменьшило его размер до 1,8 МБ.
- Убрано изображение из текстуры вскоре после использования.
Я все еще вижу черный экран на iPad 3. Есть предложения?
Обновление: нашел проблему - у меня был код, в котором я переопределял OnEnter
и вызывал в нем [[CCDirector sharedDirector]replaceScene]
, а также вызывал то же самое из фонового потока. Удалена перегрузка OnEnter, и все заработало без мерцания.
Спасибо