关于淡入淡出后不加载新地图的问题

  • 本帖最后由 小白 于 2013-2-20 15:58 编辑 *

最近遇到个问题,魔塔游戏进入楼梯传送点后正常情况应该是淡入淡出后,出现新地图。但是我的运行后淡入淡出后旧地图没了,新地图却不出来,一直黑的,代码如下

void GameScene::switchMap()
{
        CCLayerColor *fadeLayer=CCLayerColor::create(ccc4(0,0,0,0));
        fadeLayer->setAnchorPoint(CCPointZero);
        fadeLayer->setPosition(CCPointZero);
        addChild(fadeLayer,kFadeLayer,kFadeLayer);
        CCAction *action=CCSequence::create(CCFadeIn::create(0.5f),CCCallFunc::create(this,callfunc_selector(GameScene::resetGameLayer)),NULL);
        //fadeLayer->runAction(action);
        this->getChildByTag(kFadeLayer)->runAction(action);
}

代码最后一句本来是注释掉的那句,出现问题,后来我改成了现在的那句,问题没了,正常出新地图。这是为什么啊?我觉得fadeLayer是局部变量可以直接使用,为何要费事用this->getChildByTag(kFadeLayer)?再说我看别人的代码也是直接用并没有出现那种问题。

还有一部分代码如下

void GameScene::resetGameLayer()
{
	this->removeChildByTag(kGameLayer,true);
	GameLayer *gamelayer=GameLayer::create();
	this->addChild(gamelayer,kGameLayer,kGameLayer);
	CCAction *action=CCSequence::create(CCFadeOut::create(0.5f),CCCallFunc::create(this,callfunc_selector(GameScene::removeFadeLayer)),NULL);
	this->getChildByTag(kFadeLayer)->runAction(action);
}

void GameScene::removeFadeLayer()
{
	this->removeChildByTag(kFadeLayer,true);
}