2014-01-22 69 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:釋放CCDirector 0x6906f0

回答

0

確認popScene方法沒有運行兩次,也許是由用戶快速點擊菜單項(或一個錯誤)。

這將彈出當前和HelloWorld場景,讓導演不顯示場景。這也將解釋導演釋放。

您可以通過首先檢查導演的runningScene是否與this(如在SecondScene實例中)相同,然後才調用popScene來阻止此操作。

0

我有同樣的問題,但我卻解決了, 我想你可能已經刪除從場景中的所有兒童, 檢查你的OnExit或析構函數,看看是否有釋放/刪除這兩個函數可用選項。

如果現場沒有小孩,那就是黑色。

+0

場景意味着你推入堆棧的場景。(pushScene()) –