2014-01-22 4 views
0

Я только начал изучать Cocos2dx и использовал основной проект HelloWorld. Я добавил SecondScene и кнопку, чтобы изменить сцену. Но как только метод popScene выполнен, экран стал черным, и он не попал в первую сцену. Я не знаю, что случилось. Вот код, я изменил немного в helloworld.cpp:получить черный экран после popScene

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) 
CCDirector::sharedDirector()->pushScene(SecondScence::scene()); 
#endif 

Код в SecondScene:

#include "SecondScence.h" 
USING_NS_CC; 

CCScene* SecondScence::scene(){ 
CCScene* scene=CCScene::create(); 
SecondScence* layer = SecondScence::create(); 
scene->addChild(layer); 
return scene; 


bool SecondScence::init(){ 
CCLabelTTF* label = CCLabelTTF::create("hfiejfeiojfoej", "Arial", 30); 
label->setPosition(ccp(200,200)); 
this->addChild(label); 

CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png","CloseSelected.png",this,menu_selector(SecondScence::popScene)); 
pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width-20, 20)); 

CCMenu *pMenu = CCMenu::create(pCloseItem,NULL); 
pMenu->setPosition(CCPointZero); 
this->addChild(pMenu,1); 

return true; 
} 

void SecondScence::popScene(CCObject* pSender){ 
    CCDirector::sharedDirector()->popScene(); 
} 

Кстати, я использую cocos2dx 2.2 и xcode5, тем консольный печатаем сообщение: Cocos2d : cocos2d: deallocing CCDirector 0x6906f0

ответ

0

Убедитесь, что метод popScene не запускается дважды, возможно, пользователь быстро нажимает на пункт меню (или ошибку).

Это бы появилось как текущее, так и сценарий HelloWorld, оставив режиссера без сцены для отображения. Это также объясняет освобождение директора.

Вы можете предотвратить это, предварительно проверив, идентичен ли директора режимом this (как в случае с экземпляром SecondScene), и только затем вызывается popScene.

0

У меня такая же проблема, но я решил, я думаю, что вы, возможно, удалили всех детей от сцены, проверить вы OnExit или деструктор, чтобы увидеть, если какой-либо выпуск/удалить опции, доступные в этих двух функций.

Если у сцены нет детей, это было бы черным.

+0

сцена означает сцену, которую вы вставляете в стек. (PushScene()) –

Смежные вопросы