閱讀942 返回首頁    go 京東網上商城


Cocos2d-x場景生命周期函數介紹

層(Layer)的生命周期函數有如下

init()。初始化層調用。

onEnter()。進入層時候調用。

onEnterTransitionDidFinish()。進入層而且過渡動畫結束時候調用。

onExit()。退出層時候調用。

onExitTransitionDidStart()。退出層而且開始過渡動畫時候調用。

cleanup()。層對象被清除時候調用。

 

提示  層(Layer)繼承於節點(Node)這些生命周期函數根本上是從Node繼承而來。事實上所有Node對象包括場景、層、精靈等都有這些函數隻要是子類化這些類都可以重寫這些函數來處理這些對象的不同生命周期階段事件。

 

我們重寫HelloWorld層的中幾個生命周期函數代碼如下

bool HelloWorld::init()
{           
    if( !Layer::init() )
    {
         returnfalse;
    }
 
    log("HelloWorldinit");
    ......
    returntrue;
}
 
void HelloWorld::onEnter()
{
    Layer::onEnter();
    log("HelloWorldonEnter");
}
 
voidHelloWorld::onEnterTransitionDidFinish()
{
    Layer::onEnterTransitionDidFinish();
    log("HelloWorldonEnterTransitionDidFinish");
}
 
void HelloWorld::onExit()
{
    Layer::onExit();
    log("HelloWorldonExit");
}
 
voidHelloWorld::onExitTransitionDidStart()
{
    Layer::onExitTransitionDidStart();
    log("HelloWorldonExitTransitionDidStart");
}
 
void HelloWorld::cleanup()
{
    Layer::cleanup();
    log("HelloWorldcleanup");
}
 

注意 在重寫層生命周期函數中第一行代碼應該是調用父類的函數例如HelloWorld::onEnter()中第一行應該是Layer::onEnter()函數如果不調用父類的函數可能會導致層中動畫、動作或計劃無法執行。

 

如果HelloWorld是第一個場景當啟動HelloWorld場景時候它的調用順序如下圖所示


更多內容請關注最新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:22

  上一篇:go 是我out了,c11標準出爐鳥
  下一篇:go 菲爾人格測試