您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-x学习笔记-CCNode

2012-10-27 12:23 465 查看
前面用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 getIsRunning(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);

转载请注明来自:Alex
Zhou,本文链接:http://codingnow.cn/cocos2d-x/765.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: