[3]Cocos2d-x之Node的CREATE_FUNC、create、init、onEnter方法
发布时间:2020-12-14 21:17:36 所属栏目:百科 来源:网络整理
导读:总结: 1、节点的TestScene::create方法调用相当于调用 CREATE_FUNC(TestScene) , CREATE_FUNC重新实现了create; 2、调用create方法会调用到inti方法; 3、init在创建时会调用一次,onEnter在每次进入场景时都会调用,重写onEnter时,必须同时调用父类的on
总结:
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的注释:
当重写onEnter时,也必须调用父类的onEnter。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |