pushScene
void HelloWorld::menuItemSettingCallback(Ref *pSender)
{
auto sc = Setting::createScene();
auto reScene = TransitionFadeBL::create(1.0f, sc);//过渡动画
Director::getInstance()->pushScene(reScene);
}
pushScence是将当前场景入栈,在切换至下一个场景
使用场景的生命周期函数检测,定义下列函数
(必须在头文件定义类时声明,在父类Node(HelloWorld继承Layer,Layer继承Node)中,这些函数都是虚函数)
//HelloWorld.cpp
void HelloWorld::onEnter()
{
Layer::onEnter();
log("onenter");
}
void HelloWorld::onEnterTransitionDidFinish()
{
Layer::onEnterTransitionDidFinish();
log("onEnterTransitionDidFinish");
}
void HelloWorld::onExit()
{
Layer::onExit();
log("onExit");
}
void HelloWorld::onExitTransitionDidStart()
{
Layer::onExitTransitionDidStart();
log("onExitTransitionDidStart");
}
void HelloWorld::cleanup()
{
Layer::cleanup();
log("cleanup");
}
刚进入第一个场景时候:
HelloWorld init
onenter
onEnterTransitionDidFinish
切换到下一个场景时
onExitTransitionDidStart
onExit
replaceScene
void HelloWorld::menuItemSettingCallback(Ref *pSender)
{
auto sc = Setting::createScene();
auto reScene = TransitionFadeBL::create(1.0f, sc);
Director::getInstance()->replaceScene(reScene);
}
用一个新的场景代替当前场景
生命周期函数测试结果:
HelloWorld init
onenter
onEnterTransitionDidFinish
onExitTransitionDidStart
onExit
cleanup
popScene
void HelloWorld::menuItemSettingCallback(Ref *pSender)
{
auto sc = Setting::createScene();
Director::getInstance()->popScene();
}
??书上说可以结合pushScene用来转换场景,然而他是用来退出的。
HelloWorld init
onenter
onEnterTransitionDidFinish
onExit
cleanup