在Cocos2d-x中,几乎所有与渲染有关的类都是继承自CCNode类。由此可见,类CCNode在Cocos2d-x引擎中的重要性是无可替代的。场景CCscene、层CCLayer、精灵CCSprite以及精灵集合CCSpriteBatchNode的父类都是类CCNode。
/* 类CCNode与节点有关的函数 */ // 将参数中的节点对象添加至当前节点,z坐标为0 virtual void addChild(CCNode *child); // 将参数中的节点对象添加至当前节点,z坐标为zOrder virtual void addChild(CCNode *child,int zOrder); // 将参数中的节点对象添加至当前节点,z坐标为zOrder,标志值为tag virtual void addChild(CCNode *child,int zOrder,int tag); // 将当前节点从父节点移除,并设置是否清除动作以及计时器 void removeFromParentAndCleanup(bool cleanup); // 移除参数中指定的子节点,并设置是否清除动作以及计时器 virtual void removeChild(CCNode *child,bool cleanup); // 通过标志值来移除子节点,并设置是否清除动作以及计时器 void removeChildByTag(int tag,bool cleanup); // 移除全部的子节点,并设置是否清除动作以及计时器 virtual void removeAllChildWithCleanup(bool cleanup); // 返回标志值指定的子节点 CCNode *getChildByTag(int tag,bool cleanup); // 重新设置子节点的z坐标值 virtual void reorderChild(CCNode *child,int zOrder); // 排序所有子节点,提供渲染性能。不要随意使用,除非需要在当前帧移除新加入的子节点 virtual void sortAllChildren(); // 获得子节点组成的数组 virtual cocos2d::CCArray *getChild(void); // 获得子节点的数目 unsigned int getChildrenCount(void);
/* 类CCNode中的定时器有关的函数 */ // 检查当前函数句柄是否为定时器回调 bool isScheduled(SEL_SCHEDULE selectot); // 启动定时器回调函数 void scheduleUpdate(void); // 根据优先级来控制回调函数 void scheduleUpdateWithPriority(int priority); // 取消回调函数 void unscheduleUpdate(void); // 启动定时器,参数为回调函数 void schedule(SEL_SCHEDULE selectot); // 启动定时器,参数为回调函数和以毫秒为单位的循环周期 void schedule(SEL_SCHEDULE selector,float interval); // 启动定时器,参数为回调函数和以毫秒为单位的循环周期、循环次数以及延迟启动时间 void schedule(SEL_SCHEDULE selector,float interval,unsigned int repeat,float delay); // 启动一次定时器,参数为回调函数以及延迟启动时间 void scheduleOne(SEL_SCHEDULE selector,float delay); // 取消指定回调函数的定时器 void unschedule(SEL_SCHEDULE selector); // 取消所有定时器,包括回调函数 void unscheduleAllSelectors(void); // 恢复所有定时器以及动作 void resumeSchedulerAndActions(void); // 暂停所有定时器以及动作 void pauseSchedulerAndActions(void);
/* 类CCNode中与动作相关的函数 */ // 执行动作,返回执行动作 CCAction *renAction(CCAction *action); // 停止所有动作 void stopAllActions(void); // 停止指定动作 void stopAction(CCAction *action); // 根据标志值停止指定动作 void stopActionByTag(int tag); // 根据标志值获得指定动作对象 CCAction *getActionByTag(int tag); // 获取当前对象执行动作数目 unsigned int numberOfRnnningActions(void);
CCNode子类结构:
上面的图片列出了引擎渲染框架中五个主要的类。它们将游戏画面进行合理的划分。这五个类的功能几乎涵盖了整个游戏的显示内容。从坐到右,依次为:场景类、图层类、菜单类、精灵类以及粒子系统类。