層(Layer)的生命週期函數有以下:php
init()。初始化層調用。html
onEnter()。進入層時候調用。函數
onEnterTransitionDidFinish()。進入層並且過渡動畫結束時候調用。動畫
onExit()。退出層時候調用。網站
onExitTransitionDidStart()。退出層並且開始過渡動畫時候調用。spa
cleanup()。層對象被清除時候調用。.net
提示 層(Layer)繼承於節點(Node),這些生命週期函數根本上是從Node繼承而來。事實上全部Node對象(包括:場景、層、精靈等)都有這些函數,只要是子類化這些類均可以重寫這些函數,來處理這些對象的不一樣生命週期階段事件。code
咱們重寫HelloWorld層的中幾個生命週期函數,代碼以下:orm
[html] view plaincopyhtm
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系列圖書《Cocos2d-x實戰(卷Ⅰ):C++開發》
本書交流討論網站:http://www.cocoagame.net
歡迎加入cocos2d-x技術討論羣:25776038六、327403678