您的位置:首页 > Web前端 > Node.js

CCNode

2013-09-02 14:55 204 查看
转载:http://codingnow.cn/cocos2d-x/765.html

前面用cocos2d-x完成了一个简单的demo,已经对使用cocos2d-x开发游戏有了一个大概的认识,现在来学习cocos2d-x中的常用类CCNode。学习cocos2d-x应该先了解它的整体结构,从大方向出发再逐步掌握细节问题,分而治之。cocos2d-x的类采用的是树状继承的方式,CCNode类是一个比较核心的类,下图是类结构图:



CCObject类是cocos2d-x中所有对象的基类,可以理解成java中的Object类,它封装了对象的引用计数和自动释放功能。从上图可知,CCNode是场景、层、菜单、精灵等所有节点的父类,而我们在使用cocos2d-x开发游戏时,接触的最多的就是场景、层、精灵这些东东,所以擒贼先擒王,下面就来了解一下CCNode内部包含的主要函数,在后期开发中会经常使用这些函数。

//获取节点的顺序,ZOrder:节点的Z轴,当有多个节点在屏幕显示时,引擎会根据它们Z轴的大小决定绘制顺序,Z轴大的会盖住Z轴小的
virtual int getZOrder(void)

//获取节点的位置(x,y)
virtual const CCPoint& getPosition(void)

//设置节点的位置
virtual void setPosition(const CCPoint &var)

//获取其对应的摄像机,因为cocos2d-x是通过3D方式绘制2D效果的
virtual CCCamera* getCamera(void)

//判断节点是否可见
virtual bool getIsVisible(void)

//设置节点可见性
virtual void setIsVisible(bool var)

//获取节点的锚点的位置
virtual const CCPoint& getAnchorPoint(void)

//设置节点的锚点位置
virtual void setAnchorPoint(const CCPoint &var)

//获取节点的尺寸,无论节点时缩放还是旋转,尺寸不变。层和场景的尺寸是屏幕的大小
virtual const CCSize& getContentSize(void)

//设置节点的尺寸
virtual void setContentSize(const CCSize &var)

//判断节点是否在运行
virtual bool getIsR
4000
unning(void)


//获取父节点
virtual CCNode* getParent(void)

//获取节点的tag
virtual int getTag(void)

//设置节点的tag
virtual void setTag(int var)

//创建和初始化一个节点,该节点会自动释放
static CCNode * node(void);

//节点开始进入舞台时执行
virtual void onEnter();

//节点进入舞台后执行
virtual void onEnterTransitionDidFinish();

//节点离开舞台时执行
virtual void onExit();

//添加子节点,z-order默认值为0
virtual void addChild(CCNode * child);

//添加子节点,指定z-order值
virtual void addChild(CCNode * child, int zOrder);

//添加子节点,指定z-order值和tag
virtual void addChild(CCNode * child, int zOrder, int tag);

//从父节点中删除当前节点,如果cleanup为true则清除当前节点的所有动作及回调函数;如果当前节点没有父节点则什么也不做
void removeFromParentAndCleanup(bool cleanup);

//删除指定节点,如果cleanup为true则清除指定节点的所有动作
virtual void removeChild(CCNode* child, bool cleanup);

//通过tag删除节点,如果cleanup为true则清除该节点的所有动作
void removeChildByTag(int tag, bool cleanup);

//删除所有子节点,如果cleanup为true则清除节点的所有动作
virtual void removeAllChildrenWithCleanup(bool cleanup);

//通过tag获取节点
CCNode * getChildByTag(int tag);

//重新给指定节点的zOrder赋值
virtual void reorderChild(CCNode * child, int zOrder);

//清除所有动作及任务调度函数
virtual void cleanup(void);

//绘制节点自己
virtual void draw(void);

//递归visit和draw子节点
virtual void visit(void);

//返回节点对象的矩形框(由坐标和宽高组合而成)
CCRect boundingBox(void);

//执行动作
CCAction* runAction(CCAction* action);

//停止所有的动作
void stopAllActions(void);

//从动作序列中删除指定动作
void stopAction(CCAction* action);

//通过tag删除动作
void stopActionByTag(int tag);

//通过tag获取动作
CCAction* getActionByTag(int tag);

//执行节点的update函数,每帧都执行
void scheduleUpdate(void);

//取消执行节点的update函数
void unscheduleUpdate(void);

//定义一个定时器,每帧调用一次指定函数
void schedule(SEL_SCHEDULE selector);

//定义一个定时器,可以每隔一定的时间调用一次指定函数
void schedule(SEL_SCHEDULE selector, ccTime interval);

//取消一个定时器
void unschedule(SEL_SCHEDULE selector);

//取消所有定时器,包括scheduleUpdate,不影响动作
void unscheduleAllSelectors(void);

//恢复所有定时器和动作
void resumeSchedulerAndActions(void);

//暂停所有定时器和动作
void pauseSchedulerAndActions(void);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: