Когда мы должны использовать pushScene и replaceScene? - PullRequest
3 голосов
/ 21 мая 2010

Я cocos2d, я использую pushScene и replaceScene, чтобы перейти к следующей сцене. Но я запутался, что мы должны использовать?

Когда я использую replaceScene, в некоторых местах приложение вылетает и выдает ошибки типа

-[UITextView length]: unrecognized selector sent to instance 0x842a750  
 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UITextView length]: unrecognized selector sent to instance 0x842a750'  

Но в моей программе я не передаю длину UITextView. Моя программа таким образом
В scene1 у меня есть UITextView, и я заменяю эту сцену scene2. Тогда

-(id)buttonPressed:(id)sender
{
    [description removeFromSuperview];  // It is the textView(description)
    CCScene *Scene = [CCScene node];
    CCLayer *Layer = [scene2 node];

    [Scene addChild:Layer];

    [[CCDirector sharedDirector] setAnimationInterval:1.0/60];
    [[CCDirector sharedDirector] replaceScene: Scene];
}  

Но когда я использую pushScene в присутствии replaceScene, он работает хорошо. Пожалуйста, уточните мне, какой из них следует использовать в каких случаях?

Спасибо

1 Ответ

3 голосов
/ 31 июля 2010

Вы захотите использовать replaceScene практически во всех случаях. Метод pushScene сохраняет предыдущую сцену в памяти, что, скорее всего, не дает сбоя. Что-то в этой сцене не совсем правильно, и когда она освобождается после replaceScene, происходит сбой. Это не имеет ничего общего с системой замены сцены cocos2d.

Ваш UITextView в scene1, вероятно, выпускается слишком часто. Если он создан как объект автоматического выпуска, не отправляйте ему сообщение о выпуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...