замена сцены из другого класса - PullRequest
0 голосов
/ 27 февраля 2012

У меня проблема, которая, я сомневаюсь, связана с cocos2d, но я использую cocos.

В нашем приложении есть несколько сцен, которые мы можем заменить их методом relpaceScene -cocos2d.

СЕЙЧАС, есть еще один новый класс, который не является представлением и ничем иным, кроме как делает это: получайте уведомления из центра уведомлений, а затем заменяйте текущую сцену на экране.

когда я это делаю, заменяю сцену, вызывается NSLog этой сцены, НО, все спрайты в этой сцене не отображаются, и я вижу белый экран.

кажется, что каким-то образом этот класс выпущен, или что-то, или я не могу заменить сцену из этого класса по какой-то причине.

эта проблема очень странная, и я надеюсь, что у вас есть ЛЮБАЯ подсказка.

код для замены сцены: (это работает из других сцен, но не из этого класса)

  [[CCDirector sharedDirector] replaceScene:[[BasicSceneWithCat scene] setBackgroundSprite:[CCSprite spriteWithFile:@"bedroom&cat_bg.png"] withType:@"bedroom"]];

класс и помазание называются, но [self addChild:sprite]; не бывает.

спасибо ./

Ответы [ 3 ]

0 голосов
/ 27 февраля 2012

Похоже, ваша проблема в неправильном использовании метода

replaceScene: 

.Вы должны передать объект CCScene в этом методе в качестве аргумента.Но вы передаете туда результат вашего

setBackgroundSprite:withType: 

метода.И я думаю, это ничего не возвращает.

0 голосов
/ 28 февраля 2012

Просто прочитайте ваш вопрос. Я не совсем уверен, что вы хотите сделать .. Но вы можете попробовать одну вещь .. В случае уведомлений, как правило, у вас есть методы делегата, реализованные в классе сцены / слоя. Так что вместо вызова из этого класса .. Попробуйте вызвать метод в классе сцены / слоя ... или вы можете вызвать метод из вашего класса, как ...

[[[CCDirector sharedDirector] runningScene] callMethodToReplaceScene];

и в этом методе замените сцену как обычно.

0 голосов
/ 27 февраля 2012

Я не вижу непосредственно, где ваша проблема, потому что строка кода, которую вы используете, необычна сама по себе:

Попробуйте что-то в соответствии с примером, который я привел.(Вам необходимо изменить его в соответствии с вашим делом соответственно)

BasicSceneWithCat *scene = [BasicSceneWithCat scene];
[scene setBackgroundSprite:[CCSprite spriteWithFile:@"bedroom&cat_bg.png"]];
[scene setType:@"bedroom"];

[[CCDirection sharedDirector] replaceScene:scene];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...