在多個場景切換時候,場景的生命週期會更加複雜。這一節咱們介紹一下場景切換生命週期。php
多個場景切換時候分爲幾種狀況:html
狀況1,使用pushScene函數從實現HelloWorld場景進入Setting場景。函數
狀況2,使用replaceScene函數實現從HelloWorld場景進入Setting場景。網站
狀況3,使用popScene函數從實現Setting場景回到HelloWorld場景。spa
咱們參考HelloWorld重寫Setting層的中幾個生命週期函數,代碼以下:.net
[html] view plaincopycode
bool Setting::init() orm
{ htm
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函數。
更多內容請關注Cocos2d-x系列圖書《Cocos2d-x實戰(卷Ⅰ):C++開發》
本書交流討論網站:http://www.cocoagame.net
歡迎加入cocos2d-x技術討論羣:25776038六、327403678