cocos2dx中init()与onEnter()的区别

init()和onEnter()这俩个方法都是CCNode的方法。其区别如下:


1.其被调用的顺序是先init(),后onEnter()。


2.init()在类的初始化时只会调用一次。


3.onEnter在该类被载入场景的时候被调用,可能会发生多次。


4.CCLayer* cclayer = new MyLayer();

这种情况下,只会触发onEnter。


5.CCLayer* cclayer = MyLayer::create();

这样情况下,既会触发init()方法,也会触发onEnter()方法


这里说的new会触发onEnter不是说在new中直接或间接的调用了init,而是说:1.create函数内部调用了init方法,而后在addChild的时候间接调用了onEnter。2.直接调用new没有调用init方法,而后在addChild的时候间接调用了onEnter。以上两种情况下,init方法没有被调用。最后,建议不要直接使用new,而是使用静态的create方法,因为该方法中做了更多的事情

相关文章

操作步骤 1、创建cocos2d-x工程 2、新建 Scene1.cpp Scene1.h Scene1.h代码 #ifndef __SCENE1_H__#defi...
开发环境:OS(WINDOWS 8.1 X64 企业版) cocos2d-x 2.2.1 vs2010 想给vs安装上cocos的模版,执行Install...
把创建项目做成一个批处理,当创建项目时可以省时省力很多。 操作步骤 1、在 E:cocos2d-x-2.2.1toolspr...
https://www.cnblogs.com/JiaoQing/p/3906780.html 四个响应函数 1 EventListenerPhysicsContact* evC...
转载于 http://www.cnblogs.com/kenkofox/p/3926797.html 熟悉js的dom事件或者flash事件的,基本都能立...
ScrollView(滚动容器)加载大量item时会导致游戏界面的卡顿,严重时整个界面会出现卡死的情况。最近项...