[cocos2d-x] --- CCNode类详解
Cocos2d-x学习交流群:140326755
Email : hahayacoder@gmail.com
1 CCNode是cocos2d-x中一个很重要的类,CCNode是场景、层、菜单、精灵等的父类。而我们在使用cocos2d-x时,接触最多的就是场景、层、菜单、精灵等。所以有必要先弄懂CCNode类
2 CCObject类是cocos2d-x中所有对象的基类,CCObject封装了对象的引用计数和自动释放功能,下面是类图
3 因为场景、层、精灵、菜菜单是CCNode的子类,所以在使用它们时,有些方法来自CCNode,下面解释了CCNode中常用的方法
//初始化CCNode bool init(); //生成CCNode对象 CCNode * create(void); //获取描述字符串 便于调试 const char* description(void); //设置节点Z轴顺序 当有多个节点在Z轴显示时 引擎会根据它们Z轴的大小决定绘制顺序 Z轴大的会覆盖Z轴小的 void setZOrder(int zOrder); void _setZOrder(int z); //获取节点Z轴顺序 int getZOrder(); //设置OpenGL Z轴顶点 void setVertexZ(float vertexZ); //获取OpenGL Z轴顶点 float getVertexZ(); //设置节点X轴比例因子 void setScaleX(float fScaleX); //获取节点X轴比例因子 float getScaleX(); //设置节点Y轴比例因子 void setScaleY(float fScaleY); //获取节点Y轴比例因子 float getScaleY(); //设置节点比例因子 同时设置X轴、Y轴 void setScale(float scale); //获取节点比例因子 必须X轴、Y轴比例因子相等 float getScale(); //设置节点(x, y)在OpenGL中的坐标 void setPosition(const CCPoint &position); //获取节点(x, y)在OpenGL中的坐标 const CCPoint& getPosition(); //设置节点(x, y)在OpenGL中的坐标 void setPosition(float x, float y); //获取节点(x, y)在OpenGL中的坐标 void getPosition(float* x, float* y); //设置节点在OpenGL中的X坐标 void setPositionX(float x); //获取节点在OpenGL中的X坐标 float getPositionX(void); //设置节点在OpenGL中的Y坐标 void setPositionY(float y); //获取节点在OpenGL中的Y坐标 float getPositionY(void); //设置X轴的倾斜角度 void setSkewX(float fSkewX); //获取X轴的倾斜角度 float getSkewX(); //设置Y轴的倾斜角度 void setSkewY(float fSkewY); //获取Y轴的倾斜角度 float getSkewY(); //设置节点锚点的位置 void setAnchorPoint(const CCPoint& anchorPoint); //获取节点锚点的位置 const CCPoint& getAnchorPoint(); //设置节点的尺寸 void setContentSize(const CCSize& contentSize); //获取节点的尺寸 const CCSize& getContentSize(); //设置节点是否可见 void setVisible(bool visible); //获取节点是否可见 bool isVisible(); //设置节点自转角度 void setRotation(float fRotation); //获取节点自转角度 float getRotation(); //zOrder 当有多个节点在Z轴显示时 引擎会根据它们Z轴的大小决定绘制顺序 Z轴大的会覆盖Z轴小的 //添加子节点 zOrder默认为0 void addChild(CCNode * child); //添加子节点 void addChild(CCNode * child, int zOrder); //添加子节点 指定节点zOrder和节点tag void addChild(CCNode* child, int zOrder, int tag); //通过tag名称获取节点 CCNode * getChildByTag(int tag); //获取所有子节点 CCArray* getChildren(); //获取子节点数目 unsigned int getChildrenCount(void); //设置子节点的父节点 void setParent(CCNode* parent); //获取子节点的父节点 CCNode* getParent(); //从父节点中删除当前子节点 void removeFromParent(); //从父节点中删除当前子节点 如果Cleanup为true则删除当前节点的所有动作及回调函数 void removeFromParentAndCleanup(bool cleanup); //从父节点中删除当前子节点 如果Cleanup为true则删除当前节点的所有动作 void removeChild(CCNode* child); //从父节点中删除当前子节点 并指定Cleanup void removeChild(CCNode* child, bool cleanup); //通过tag名称移除节点 void removeChildByTag(int tag); //通过tag名称移除节点并指定Cleanup void removeChildByTag(int tag, bool cleanup); //移除所有子节点 void removeAllChildren(); //移除所有子节点 并指定Cleanup void removeAllChildrenWithCleanup(bool cleanup); //重新设定节点的zOrder void reorderChild(CCNode * child, int zOrder); //重新排序所有子节点 void sortAllChildren(); //获取节点的tag名称 int getTag(); //设置节点的tag名称 void setTag(int nTag); //获取节点的CCCamera摄像机 cocos2d-x是通过3D方式绘制2D效果 CCCamera* getCamera(); //判断当前节点是否在运行 bool isRunning(); //节点开始进入舞台时的回调事件 void onEnter(); //节点进入舞台时的回调事件 void onEnterTransitionDidFinish(); //节点离开舞台时的回调事件 void onExit(); //停止所有运行的动作和回调函数 void cleanup(void); //绘制节点 void draw(void); //递归visit子节点并重绘 void visit(void); //返回节点对象的矩形框(由坐标宽高组成) CCRect boundingBox(void); //设置CCActionManager对象被所有动作使用 void setActionManager(CCActionManager* actionManager); //获取被所有动作使用的CCActionManger CCActionManager* getActionManager(); //执行动作 CCAction* runAction(CCAction* action); //停止动作 stopAction(CCAction* action); //停止所有动作 void stopAllActions(void); //通过tag名称获取动作 CCAction* getActionByTag(int tag); //获取正在运行的动作数量 unsigned int numberOfRunningActions(void); //定义一个定时器 void schedule(SEL_SCHEDULE selector, float interval, unsigned int repeat, float delay); //定义一个定时器 void schedule(SEL_SCHEDULE selector, float interval); //取消一个定时器 void unschedule(SEL_SCHEDULE selector); //取消所有定时器 void unscheduleAllSelectors(void); //暂停所有定时器和动作 void pauseSchedulerAndActions(void); //恢复所有定时器和动作 void resumeSchedulerAndActions(void);