[3]Cocos2d-x之Node的CREATE_FUNC、create、init、onEnter方法

[3]Cocos2d-x之Node的CREATE_FUNC、create、init、onEnter方法,第1张

概述总结: 1、节点的TestScene::create方法调用相当于调用 CREATE_FUNC(TestScene), CREATE_FUNC重新实现了create; 2、调用create方法会调用到inti方法; 3、init在创建时会调用一次,onEnter在每次进入场景时都会调用,重写onEnter时,必须同时调用父类的onEnter方法。 一、create与init方法之间的关系 Spri 总结: 1、节点的TestScene::create方法调用相当于调用 CREATE_FUNC(TestScene)CREATE_FUNC重新实现了create; 2、调用create方法会调用到inti方法; 3、init在创建时会调用一次,onEnter在每次进入场景时都会调用,重写onEnter时,必须同时调用父类的onEnter方法。 一、create与init方法之间的关系 Sprite、Layer与Scene都继承Node,在使用create创建对象时会调用各自的init方法并添加引用计算。如下为scene的create方法实现
Scene * Scene ::create(){    Scene *ret = new (std::nothrow) Scene ();    if (ret && ret->init())    {        ret->autorelease();        return ret;    }    else    {        CC_SAFE_DELETE (ret);        return nullptr ;    }}
Scene的init方法设置显示内容的大小,Layer与Scene的init方法作用相同
bool Scene ::init(){    auto size = Director ::getInstance()->getWinSize();    return initWithSize(size);}
Node的init方法
bool Node ::init(){    return true ;}
当我们使用Scene与Layer的create方法创建实例时,可以通过重新实现init方法,达到我们想要做的一些初始化 *** 作,实现: 1、重写init()方法。 2、使用宏定义CREATE_FUN(Scene或Layer的子类),这个宏定义相当于从重新定义了create方法,调用create等于调用重新定义的CREATE_FUN
二、init与onEnter 执行顺序:init->onEnter init在创建对象时会执行一次。 onEnter每次进入场景的时候都会被调用,cocos2d-x的注释:
* Event callback that is invoked every time when Node enters the 'stage'. * If the Node enters the 'stage' with a Transition,this event is called when the Transition starts. * During onEnter you can't access a "sister/brother" node. * If you overrIDe onEnter,you shall call its parent's one,e.g.,Node::onEnter().
当重写onEnter时,也必须调用父类的onEnter。 总结

以上是内存溢出为你收集整理的[3]Cocos2d-x之Node的CREATE_FUNC、create、init、onEnter方法全部内容,希望文章能够帮你解决[3]Cocos2d-x之Node的CREATE_FUNC、create、init、onEnter方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1057538.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存