Cocos2d-x之onEnter()、onEnterTransitionDidFinish()、onExit()、onExitTransitionDidStart()
2015-06-20 15:15
561 查看
在多个场景切换时候,场景的生命周期会更加复杂。这一节我们介绍一下场景切换生命周期。
多个场景切换时候分为几种情况:
情况1,使用pushScene函数从实现HelloWorld场景进入Setting场景。
情况2,使用replaceScene函数实现从HelloWorld场景进入Setting场景。
情况3,使用popScene函数从实现Setting场景回到HelloWorld场景。
我们参考HelloWorld重写Setting层的中几个生命周期函数,代码如下:
bool Setting::init()
{
if( !Layer::init() )
{
returnfalse;
}
log("Settinginit");
......
returntrue;
}
void Setting::onEnter()
{
Layer::onEnter();
log("SettingonEnter");
}
void Setting::onEnterTransitionDidFinish()
{
Layer::onEnterTransitionDidFinish();
log("SettingonEnterTransitionDidFinish");
}
void Setting::onExit()
{
Layer::onExit();
log("SettingonExit");
}
void Setting::onExitTransitionDidStart()
{
Layer::onExitTransitionDidStart();
log("SettingonExitTransitionDidStart");
}
void Setting::cleanup()
{
Layer::cleanup();
log("Settingcleanup");
}
情况1时候,它的调用顺序如下图所示。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/5a871b6312aa2b4281af669740bdc166)
情况2时候,它的调用顺序如下图所示,从图中可见与上面不同是多出HelloWorld中cleanup函数,这也说明replaceScene函数会释放场景对象。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/23/ea5a61baca53934326b4c67788d2d2ef)
情况3时候,它的调用顺序如下图所示,从图中可见popScene函数时候调用Setting中cleanup函数,这说明popScene函数会释放Setting场景对象,当回到HelloWorld场景时候并不会调用init()函数,而是调用onEnter函数。
多个场景切换时候分为几种情况:
情况1,使用pushScene函数从实现HelloWorld场景进入Setting场景。
情况2,使用replaceScene函数实现从HelloWorld场景进入Setting场景。
情况3,使用popScene函数从实现Setting场景回到HelloWorld场景。
我们参考HelloWorld重写Setting层的中几个生命周期函数,代码如下:
bool Setting::init()
{
if( !Layer::init() )
{
returnfalse;
}
log("Settinginit");
......
returntrue;
}
void Setting::onEnter()
{
Layer::onEnter();
log("SettingonEnter");
}
void Setting::onEnterTransitionDidFinish()
{
Layer::onEnterTransitionDidFinish();
log("SettingonEnterTransitionDidFinish");
}
void Setting::onExit()
{
Layer::onExit();
log("SettingonExit");
}
void Setting::onExitTransitionDidStart()
{
Layer::onExitTransitionDidStart();
log("SettingonExitTransitionDidStart");
}
void Setting::cleanup()
{
Layer::cleanup();
log("Settingcleanup");
}
情况1时候,它的调用顺序如下图所示。
情况2时候,它的调用顺序如下图所示,从图中可见与上面不同是多出HelloWorld中cleanup函数,这也说明replaceScene函数会释放场景对象。
情况3时候,它的调用顺序如下图所示,从图中可见popScene函数时候调用Setting中cleanup函数,这说明popScene函数会释放Setting场景对象,当回到HelloWorld场景时候并不会调用init()函数,而是调用onEnter函数。
相关文章推荐
- cocos2dx单场景和多场景的生命周期
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第八课: Cocos2D-X引擎框架3
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第七课: Cocos2D-X引擎框架2
- 【端午巨献】Cocos2d-x手游Xcode开发记录
- Cocos2d-x 3.0开发(三)点击交互的四种处理
- cocos 帧率测试
- 【少年の轨迹】cocos2d-x3.0中LayerColor的锚点的修改
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第六课: Cocos2D-X引擎框架1
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第五课:Hello World
- cocos2d-x-3.x 源代码框架解析
- cocos2d-x-3.6最新基础
- cocos2dx lua 接微博SDK(四)--lua与java的交互
- cocos2dx  混合模式
- Cocos2d-lua学习笔记之场景跳转
- cocos2dx3.0rc导出自定义类到lua的方法详细步骤
- 我所理解cocos2d-x 3.6 lua -- Cocos如何绑定Lua自定义类
- 【Cocos游戏实战】功夫小子第四课之设置功能和图籍场景的实现
- cocos2d-x 精灵变灰
- windows下搭建cocos2d-js 安卓环境
- cocos2d-x 数学函数、常用宏粗整理