Перезагрузка той же сцены cocos2d показывает розовый экран - PullRequest
2 голосов
/ 18 февраля 2011

Я делаю игру в cocos2d. В игровой сцене есть кнопка меню для возврата в главное меню, которое представляет собой UIViewController. Когда пользователь выбирает снова играть, и та же игровая сцена вызывается для запуска в директоре, поверх игровой сцены появляется розовый экран.

Это может быть из-за замены той же самой сцены самой собой. Итак, я заменил его пустой сценой, когда вызывается главное меню. Код, заменяющий сцену:

if ([[CCDirector sharedDirector] runningScene] == NULL) {
    [[CCDirector sharedDirector] runWithScene: [MySceneLayer scene]];
}
else {
    [[CCDirector sharedDirector] replaceScene:[MySceneLayer scene]];
}

Проверяет, не запущена ли сцена, а затем запускает игровую сцену в первый раз. Если какая-то сцена уже запущена, которая в данном случае является пустой, то заменяет ее игровой сценой. Также называется сделка игровой сцены, что означает, что старая сцена уничтожена должным образом. Даже тогда замена пустой сцены игровой сценой дает розовый экран, тогда как замена любой другой новой сцены не доставляет никаких проблем.

В чем может быть причина и каково решение?

1 Ответ

1 голос
/ 08 марта 2011

Наконец проблема поймана и решена. Все, что нужно, - это осторожная игра по добавлению и удалению просмотров. Я удалял OpenGLView из superview, когда возвращался в меню в UIViewController. При замене сцены снова, тот же

[[CCDirector sharedDirector] openGLView] 

, который использовался ранее, пришлось добавить обратно в окно приложения. Правильное место и правильное время сделали это.

Любая небольшая ошибка в представлениях или спрайтах может показать вам розовый экран:)

...