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函數。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章