Cocos2d-x多場景切換生命週期

在多個場景切換時候,場景的生命週期會更加複雜。這一節咱們介紹一下場景切換生命週期。php

多個場景切換時候分爲幾種狀況:html

狀況1,使用pushScene函數從實現HelloWorld場景進入Setting場景。函數

狀況2,使用replaceScene函數實現從HelloWorld場景進入Setting場景。網站

狀況3,使用popScene函數從實現Setting場景回到HelloWorld場景。spa

 

咱們參考HelloWorld重寫Setting層的中幾個生命週期函數,代碼以下:.net

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片code

  1. bool Setting::init()  orm

  2. {             htm

  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時候,它的調用順序以下圖所示。


 

狀況2時候,它的調用順序以下圖所示,從圖中可見與上面不一樣是多出HelloWorld中cleanup函數,這也說明replaceScene函數會釋放場景對象。

 


 

狀況3時候,它的調用順序以下圖所示,從圖中可見popScene函數時候調用Setting中cleanup函數,這說明popScene函數會釋放Setting場景對象,當回到HelloWorld場景時候並不會調用init()函數,而是調用onEnter函數。


更多內容請關注Cocos2d-x系列圖書《Cocos2d-x實戰(卷Ⅰ):C++開發》

本書交流討論網站:http://www.cocoagame.net

歡迎加入cocos2d-x技術討論羣:25776038六、327403678

相關文章
相關標籤/搜索