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

轉載地址:http://blog.csdn.net/tonny_guan/article/details/27985895


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

init()。初始化層調用。

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

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

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

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

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場景時候,它的調用順序如下圖所示:




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