[cocos2d-x] --- CCNode类详解

Cocos2d-x学习交流群:140326755 

Email : hahayacoder@gmail.com

 

1 CCNodecocos2d-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);


 

 

posted @ 2013-04-06 17:20  javawebsoa  Views(277)  Comments(0Edit  收藏  举报