在多個場景切換時候,場景的生命週期會更加複雜。這一節咱們介紹一下場景切換生命週期。
多個場景切換時候分爲幾種狀況:
狀況1,使用pushScene函數從實現GameScene場景進入SettingScene場景。
狀況2,使用replaceScene函數實現從GameScene場景進入SettingScene場景。
狀況3,使用popScene函數從實現SettingScene場景回到GameScene場景。
咱們參考GameScene重寫SettingScene的中幾個生命週期函數,代碼以下:
html
[html] view plaincopy微信
function SettingScene:ctor() 函數
-- self.visibleSize = cc.Director:getInstance():getVisibleSize() 網站
cclog("SettingScene init") lua
--場景節點事件處理 spa
local function onNodeEvent(event) .net
if event == "enter" then 視頻
self:onEnter() htm
elseif event == "enterTransitionFinish" then 對象
self:onEnterTransitionFinish()
elseif event == "exit" then
self:onExit()
elseif event == "exitTransitionStart" then
self:onExitTransitionStart()
elseif event == "cleanup" then
self:cleanup()
end
end
self:registerScriptHandler(onNodeEvent)
end
function SettingScene:onEnter()
cclog("SettingScene onEnter")
end
function SettingScene:onEnterTransitionFinish()
cclog("SettingScene onEnterTransitionFinish")
end
function SettingScene:onExit()
cclog("SettingScene onExit")
end
function SettingScene:onExitTransitionStart()
cclog("SettingScene onExitTransitionStart")
end
function SettingScene:cleanup()
cclog("SettingScene cleanup")
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課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息