Cocos2d-x多場景切換生命周期
在多個場景切換時候場景的生命周期會更加複雜。這一節我們介紹一下場景切換生命周期。
多個場景切換時候分為幾種情況
情況1使用pushScene函數從實現HelloWorld場景進入Setting場景。
情況2使用replaceScene函數實現從HelloWorld場景進入Setting場景。
情況3使用popScene函數從實現Setting場景回到HelloWorld場景。
我們參考HelloWorld重寫Setting層的中幾個生命周期函數代碼如下
bool Setting::init()
{
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實戰 C++卷》現已上線各大商店均已開售
京東https://item.jd.com/11584534.html
當當https://product.dangdang.com/23606265.html
互動出版網https://product.china-pub.com/3770734
《Cocos2d-x實戰 C++卷》源碼及樣章下載地址
源碼下載地址https://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1
樣章下載地址https://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

最後更新:2017-04-03 08:26:21