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

《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:22