Как убить сцену cocos2d напрямую, не заменяя сцену

Я запускаю игру с UIViewController таким образом:

navController = [[MyNavigationController alloc] initWithRootViewController:myController];

и когда вы нажимаете кнопку игры, игра запускает сцену следующим образом:

[[CCDirector sharedDirector] runWithScene:gameScene];

хорошо, теперь, когда я хочу выйти, я просто заменяю UIViewController (потому что я сделал меню с UIKit, а игру с cocos2d) на начальный контроллер представления, чтобы сделать анимацию, которую я хочу, она работает нормально... но, очевидно, старый работает сцена все еще остается в памяти, она никак не освобождается, мне нужно удалить сцену и сделать приложение таким, каким оно было при первом запуске.

replaceScene не сработала, мне просто нужно остановить запущенную сцену и сделать все так, как было, когда приложение запустилось, напрямую из [CCDirector sharedDirector], как я могу это сделать? popScene тоже не будет работать.


person Adarkuccio    schedule 25.04.2013    source источник
comment
загрузите пустую сцену и вызовите команду режиссера stopAnimation   -  person LearnCocos2D    schedule 26.04.2013
comment
Я не могу загрузить пустую сцену, мне нужно переключаться между текущей сценой и UIViewController (который работает), я пытался остановить анимацию и вызвать [[CCDirector sharedDirector] end]; сцена закончилась, но когда я вызываю другую игровую сцену, ничего не происходит   -  person Adarkuccio    schedule 26.04.2013
comment
тогда вам нужно вызвать startAnimation. Разве ваш uiviewcontroller не полноэкранный?   -  person LearnCocos2D    schedule 26.04.2013


Ответы (1)


вы можете удалить CCDirector из приложения.

директор - это простой UIViewController, поэтому вы можете позвонить

[[CCDirector sharedDirector] removeFromParentViewController];

и после вызова [[CCDirector sharedDirector] end]; удалить экземпляр singlenton

person busta117    schedule 26.04.2013
comment
У меня есть несколько игр, а не одна, и когда я выхожу из одной, я переключаю сцену между UIViewController и сценой, если я делаю то, что вы сказали, когда я запускаю другую игру, я получаю Не инициализируйте TextureCache раньше сообщение о сбое директора - person Adarkuccio; 26.04.2013
comment
хорошо, попробуйте освободить TextureCache перед вызовом конечного метода Директора... [CCTextureCache purgeSharedTextureCache]; - person busta117; 26.04.2013
comment
Ничего вроде не работает, у меня вопрос попроще, если у тебя 2 сцены из 2 игр, какую бы ты запускал в appDelegate? а как их после этого менять? что бы я ни делал, это кажется неправильным, если я помещаю сцену, скажем, сцену игры 1 в appDelegate, а затем нажимаю кнопку игры 1, она отображается правильно. Но если я помещаю сцену игры 1 в appDelegate и нажимаю кнопку игры 2, я получаю ошибку OpenGL 0x050-, а затем начинается сцена (с поврежденной анимацией). Я пробовал со вступительной сценой, но в результате у меня всегда ошибка и плохая анимация подкачки. - person Adarkuccio; 27.04.2013
comment
почему бы вам не использовать один и тот же экземпляр кокоса для всех игр, вам нужно только изменить сцену, сцену 1 для игры 1 и сцену 2 для игры 2 - person busta117; 29.04.2013