Cocos2d-x 场景中的生命周期函数?

来源:互联网 发布:sql与mysql 编辑:程序博客网 时间:2024/04/27 19:48

在Cocos2d-x中有这么几个函数,非常的常见。

virtual bool init( );

virtual void onEnter( );

virtual void onEnterTransitionDidFinish( );

virtual void onExitTransitionDidStart( );

virtual void onExit( );

virtual void cleanup( );

这6个函数都是Node节点类中的虚函数,也就是说,它的子类可以重写这些函数。而且这些函数的执行有一定的顺序。

情况一:单个场景从初始化 –> 退出 过程

bool init(){

if(!Layer::init()){ //父类的总是要先执行

return false;

}

return true;

}

void onEnter( ){

Layer::onEnter( );

}

void onEnterTransitionDidFinish( ){

Layer::onEnterTransitionDidFinish( );

}

注意:没有执行onExitTransitionDidStart(),因为只有一个场景。

void onExit( ){

  Layer::onExit( );

}

void cleanup( ){

Layer::cleanup( );

}

情况二:场景A 跳转到 场景B 【replaceScene】

B: bool init( );

A : onExitTransitionDidStart( );

B : void onEnter( );

A : void onExit( );

B : void onEnterTransitionDidFinish( );

A : void cleanup( );

情况三: 场景A 跳转到 场景B 【pushScene】

注意少了 void cleanup( );函数

B: bool init( );

A : void onExitTransitionDidStart( );

B : void onEnter( );

A : void onExit( );

B : void onEnterTransitionDidFinish( );

情况四: 从场景B 跳转到 场景A 【popScene】

注意没有 A: bool init( ); 因为不用初始化2次。

B: void onExitTransitionDidStart( );

B: void onExit( );

B : void cleanup( );

A: void onEnter( );

A : void onEnterTransitionDidFinish( );

0 1
原创粉丝点击