一般cocos2dx中没有继承于Scene的层,只有在Scene上添加层;运行第一个场景使用runWithScene,后面场景切换就用replaceScene;
比如:
class HelloWorld : public Layer
{
public:
HelloWorld();
~HelloWorld()
static Scene* createScene();
virtual bool init();
CREATE_FUNC(HelloWorld);
};
Scene* HelloWorld::createScene()
{
auto scene = Scene::create();
auto layer = HelloWorld::create();
scene->addChild(layer);
return scene;
}
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
return false;
}
调用这个场景
auto scene = HelloWorld::createScene();
Director::getInstance()->replaceScene(scene);//或者带特效的切换场景
Director::getInstance()->replaceScene(TransitionZoomFlipY::create(0.3f, BlueGameLayer::scene()));
//在这个场景上可以添加其他层,比如创建好了一个TestLayer;
TestLayer* layer = TestLayer::create();//注意TestLayer没有创建场景,如果TestLayer里面创建的层有创建场景,那么用replaceScene();
layer->setName(“TEST”);
Scene* pScene =Director::getInstance()->getRunningScene();
pScene->addChild(layer );
//删除
Director::getInstance()->getRunningScene()->removeChildByName("TEST");