Cocos2d-x多场景切换生命周期

在多个场景切换时候,场景的生命周期会更加复杂。这一节我们介绍一下场景切换生命周期。

多个场景切换时候分为几种情况:

情况1,使用pushScene函数从实现HelloWorld场景进入Setting场景。

情况2,使用replaceScene函数实现从HelloWorld场景进入Setting场景。

情况3,使用popScene函数从实现Setting场景回到HelloWorld场景。

 

我们参考HelloWorld重写Setting层的中几个生命周期函数,代码如下:

[html] view plaincopy在CODE上查看代码片

  1. bool Setting::init()  

  2. {             

  3.     if( !Layer::init() )  

  4.     {  

  5.          returnfalse;  

  6.     }  

  7.    

  8.     log("Settinginit");  

  9.     ......  

  10.     returntrue;  

  11. }  

  12.    

  13. void Setting::onEnter()  

  14. {  

  15.     Layer::onEnter();  

  16.     log("SettingonEnter");  

  17. }  

  18.    

  19. void Setting::onEnterTransitionDidFinish()  

  20. {  

  21.     Layer::onEnterTransitionDidFinish();  

  22.     log("SettingonEnterTransitionDidFinish");  

  23. }  

  24.    

  25. void Setting::onExit()  

  26. {  

  27.     Layer::onExit();  

  28.     log("SettingonExit");  

  29. }  

  30.    

  31. void Setting::onExitTransitionDidStart()  

  32. {  

  33.     Layer::onExitTransitionDidStart();  

  34.     log("SettingonExitTransitionDidStart");  

  35. }  

  36.    

  37. void Setting::cleanup()  

  38. {  

  39.     Layer::cleanup();  

  40.     log("Settingcleanup");  

  41. }  


 情况1时候,它的调用顺序如下图所示。

Cocos2d-x多场景切换生命周期


 

情况2时候,它的调用顺序如下图所示,从图中可见与上面不同是多出HelloWorld中cleanup函数,这也说明replaceScene函数会释放场景对象。

 

Cocos2d-x多场景切换生命周期

 

情况3时候,它的调用顺序如下图所示,从图中可见popScene函数时候调用Setting中cleanup函数,这说明popScene函数会释放Setting场景对象,当回到HelloWorld场景时候并不会调用init()函数,而是调用onEnter函数。

Cocos2d-x多场景切换生命周期

更多内容请关注Cocos2d-x系列图书《Cocos2d-x实战(卷Ⅰ):C++开发》

本书交流讨论网站:http://www.cocoagame.net

欢迎加入cocos2d-x技术讨论群:257760386、327403678





你可能感兴趣的:(游戏,移动开发,cocos2d-x)