在popScene之后获得黑屏

时间:2014-01-22 14:07:37

标签: c++ cocos2d-x

我刚开始学习Cocos2dx,并使用基本的HelloWorld项目。我添加了一个SecondScene和一个按钮来改变场景。但是一旦popScene方法执行,屏幕变黑,并且没有弹出到第一个场景。我不知道什么是错的。 这是我在HelloWorld.cpp中修改的代码:

#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

2 个答案:

答案 0 :(得分:0)

验证popScene方法未运行两次,可能是用户快速点击菜单项(或错误)。

这将弹出当前和HelloWorld场景,导演没有场景可以显示。这也可以解释导演解除分配。

您可以首先检查导演的runningScene是否与this相同(如:SecondScene实例),然后再调用popScene来阻止这种情况。

答案 1 :(得分:0)

我也有同样的问题,但我解决了, 我想你可能已经把所有孩子从现场移走了, 检查onExit或析构函数,看看这两个函数中是否有任何释放/删除选项。

如果场景没有孩子,那就是黑色。