閱讀573 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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


更多內容請關注最新Cocos圖書《Cocos2d-x實戰 C++卷》
本書交流討論網站https://www.cocoagame.net
更多精彩視頻課程請關注智捷課堂Cocos課程https://v.51work6.com
歡迎加入Cocos2d-x技術討論群257760386


《Cocos2d-x實戰 C++卷》現已上線各大商店均已開售

京東https://item.jd.com/11584534.html

亞馬遜https://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

當當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

歡迎關注智捷iOS課堂微信公共平台







 

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

  上一篇:go c# 數組 數組列表 列表 foreach
  下一篇:go [推薦係統]個性化推薦的十大挑戰