函数原型:virtual void addChild(CCNode * child, int zOrder, int tag);
addChild()有三个参数:
1、要加入场景的对象的指针,(可以是CCSprite*,CCLayer*,CCNode*等类型)
2、绘制层的顺序,默认参数值为0,表示最高优先层导入,该值越大表示该层在最后加载(在最高一层),一般背景图层是首先加载,其他元素在加载在背景层上面。因为背景在后面加载的话,会覆盖掉前面加载的元素,看不到想要的图层组合效果。
3、Tag标记。赋予类的某个方法中定义的局部变量(CCNode*类型对象,CCSprite*对象等)一个标记号tag,如果以后在该类的其他方法中要访问这个变量时可以通过调用函数 getChildByTag来取回该对象,从而方便使用这个对象进行想要的操作。这样做的好处是:定义成类的成员变量会一直占用内存资源,而局部变量的生命周期比成员变量短,节省系统资源,而且在外面就可以通过函数getChildByTagtag号来获取这个对象。所以在以后编写Cocos2d代码过程中,尽量使用局部变量。
例如:CCSprite *sp1 = (CCSprite*)this->getChildByTag(tag),然后可以再下面的代码中对该精灵对象进行访问,添加动作等等。
计时器:
CC_DEPRECATED_ATTRIBUTE void scheduleSelector(SEL_SCHEDULE selector, Ref *target, float interval, unsigned int repeat, float delay, bool paused)
// 这个重载形式???
// SEL_SCHEDULE selector 计时器回调要调用的函数
// Ref *target 一个对象,计时器是否工作,与这个对象的生命周期以及是否显示的状态有关。
// float interval 回调调用的间隔,毫秒为单位的,值为0时,每一帧调用一次。
// unsigned int repeat 回调重复调用的次数
// float delay 第一次调用前的起始时间间隔,这个单位好像是秒吧,(设一个断点测试一下就知道是不是秒为单位了)
// bool paused 是否暂停定时器计时,(不启用计时器的话,回调是不会触发的)
schedule(schedule_selector(HelloWorld::delayCall),1,1,10);
10是代表10秒之后调用delaycall函数