我先从第一个场景replaceScene到下一个场景:
void HelloWorld::play(Ref* pSender)
{
auto sc = Game::createScene();
auto tsc = TransitionSplitRows::create(1.0f, sc);
Director::getInstance()->replaceScene(tsc);
}
下一个场景设置了场景的setTag:
Scene* Game::createScene()
{
// ‘scene’ is an autorelease object
auto scene = Scene::create();
scene->setTag(TAG_GAME_SCENE);
auto mapLayer = MapLayer::create();
mapLayer->setTag(TAG_MAP_LAYER);
scene->addChild(mapLayer);
// ‘layer’ is an autorelease object
auto layer = Game::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
然后获取当前图层:
//根据标签获得图层
Layer* Util::layerWithTag(int tag)
{
//正在运行的场景
Scene* scene = Director::getInstance()->getRunningScene();
if (scene->getTag() == TAG_GAME_SCENE)
{
return (Layer*)scene->getChildByTag(tag);
}
return nullptr;
}
scene->getTag()这个取出来的是 -1
取不到当前正在运行的场景?
如果不从HelloWorld跳转Game,直接运行Game就是正常的。