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

在多個場景切換時候,場景的生命週期會更加複雜。這一節咱們介紹一下場景切換生命週期。
多個場景切換時候分爲幾種狀況:
狀況1,使用pushScene函數從實現GameScene場景進入SettingScene場景。
狀況2,使用replaceScene函數實現從GameScene場景進入SettingScene場景。
狀況3,使用popScene函數從實現SettingScene場景回到GameScene場景。
咱們參考GameScene重寫SettingScene的中幾個生命週期函數,代碼以下:
html

[html] view plaincopy微信

  1. function SettingScene:ctor()  函數

  2.    -- self.visibleSize = cc.Director:getInstance():getVisibleSize()  網站

  3.     cclog("SettingScene init")  lua

  4.     --場景節點事件處理  spa

  5.     local function onNodeEvent(event)  .net

  6.         if event == "enter" then  視頻

  7.             self:onEnter()  htm

  8.         elseif event == "enterTransitionFinish" then  對象

  9.             self:onEnterTransitionFinish()  

  10.         elseif event == "exit" then  

  11.             self:onExit()  

  12.         elseif event == "exitTransitionStart" then  

  13.             self:onExitTransitionStart()  

  14.         elseif event == "cleanup" then  

  15.             self:cleanup()  

  16.         end  

  17.     end  

  18.   

  19.   

  20.     self:registerScriptHandler(onNodeEvent)  

  21. end  

  22.   

  23.   

  24.   

  25.   

  26. function SettingScene:onEnter()   

  27.     cclog("SettingScene onEnter")  

  28. end  

  29.   

  30.   

  31. function SettingScene:onEnterTransitionFinish()   

  32.     cclog("SettingScene onEnterTransitionFinish")  

  33. end  

  34.   

  35.   

  36. function SettingScene:onExit()   

  37.     cclog("SettingScene onExit")  

  38. end  

  39.   

  40.   

  41. function SettingScene:onExitTransitionStart()   

  42.     cclog("SettingScene onExitTransitionStart")  

  43. end  

  44.   

  45.   

  46. function SettingScene:cleanup()   

  47.     cclog("SettingScene cleanup")  

  48. end  

一、狀況1時候,它的調用順序如圖所示。


狀況1生命週期事件順序



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

生命週期事件順序



三、狀況3時候,它的調用順序以下圖所示,從圖中可見popScene函數時候觸發SettingScene的cleanup事件,這說明popScene函數會釋放SettingScene場景對象,當回到GameScene場景時候並不會觸發init事件,而是觸發enter事件。

狀況3生命週期事件順序

更多內容請關注最新Cocos圖書《Cocos2d-x實戰:Lua卷——Cocos2d-lua開發

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

歡迎加入Cocos2d-x技術討論羣:257760386

更多精彩視頻課程請關注智捷課堂Cocos課程:http://v.51work6.com

智捷課堂現推出Cocos會員,敬請關注:http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0

《Cocos2d-x實戰 Lua卷》現已上線,各大商店均已開售:

京東:http://item.jd.com/11659697.html

歡迎關注智捷iOS課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息

相關文章
相關標籤/搜索