现在的位置: 首页 > 综合 > 正文

Cocos2d-x节点CCNode类的主要函数

2014年02月22日 ⁄ 综合 ⁄ 共 2638字 ⁄ 字号 评论关闭

首先是类结构:
wps_clip_image-19960

CCNode是cocos2d-x的核心类,封装了对象引用计数和自动释放功能,他 几乎是游戏中处理的大部分类的父类,其主要有以下函数:

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

virtual const
CCPoint

getPosition
(void) //获取节点的位置

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

virtual
CCArray

getChildren
(void) //获取其所有子节点

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 bool 
getIsRunning
(void) //判断节点是否在运行

virtual
CCNode

getParent
(void)//获取父及节点指针

virtual void 
setParent
(CCNode *var) //设置节点的父节点

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

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

char * 
description
(void) //返回节点的描述

virtual void 
onEnter
() //进入节点时的回调函数

virtual void 
onEnterTransitionDidFinish
()//进入节点后的回调函数

virtual void 
onExit
()//离开节点时的回调函数

virtual void 
addChild
(CCNode *child)//增加节点

virtual void 
addChild
(CCNode *child, int zOrder) //通过顺序添加节点

virtual void 
addChild
(CCNode *child, int zOrder, int tag)//通过顺序和tag添加节点

void 
removeFromParentAndCleanup
(bool cleanup)//删除父节点中的当前节点并清除动作及回调函数

virtual void 
removeChild
(CCNode *child, bool cleanup) //删除节点

void 
removeChildByTag
(int tag, bool cleanup)//通过tag删除节点

virtual void 
removeAllChildrenWithCleanup
(bool cleanup)//删除节点并清除动作及回调函数

CCNode

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

virtual void 
reorderChild
(CCNode *child, int zOrder)//根据order重新排序

virtual void 
cleanup
(void)//清除动作

virtual void 
draw
(void)//绘制自己

virtual void 
visit
(void)//访问节点

CCAction

runAction
(CCAction *action) //运行动作

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

void 
stopAction
(CCAction *action)//停止动作

void 
stopActionByTag
(int tag) //通过tag停止动作

CCAction

getActionByTag
(int tag)//通过tag获取动作的指针

unsigned int 
numberOfRunningActions
(void)//正在运行的动作的总数

void 
schedule
(SEL_SCHEDULE selector)//定义一个定时器

void 
schedule
(SEL_SCHEDULE selector,

ccTime
interval)//定义一个定时器

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

void 
unscheduleAllSelectors
(void)//取消所有定时器

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

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

static
CCNode

node
(void)//生成一个节点

CCNode是cocos2d-x的渲染链,写游戏基本上就是和他打交道了,cocos2d-x同时只能渲染一个CCScene,因此CCScene是渲染的根节点。在构建游戏时,一般是一个Scene中添加一个或者多个CCLayer,一个Layer中又添加多个CCSprite或者CCMenu,CCSprite中还可以添加CCParticleSystem等等。这样就构建了一个渲染树,cocos2d-x历遍这个树来将图像显示在屏幕上。

coco2d-x的渲染实际上是调用visit()函数来完成的:即visit()这个函数调用它包含的Child的zOrder<0的visit()函数,之后调用draw()函数,再调用Child的zOrder>=0的visit()函数,它实际上是一个深度优先的算法。他的Child是按照zOrder排序的,以保证渲染的正确性。draw()的作用是绘制自己。在CCSprite这些确实需要绘制的类中,draw()调用openGL的函数来完成绘制功能——把一个纹理映射到一个矩形上。

如果要自定义绘制一些图像,可以重写draw()函数,不过不要忘记调用父类的draw()函数。

可以进行网状关系的管理,其实CCScene,CCLayer也是一个CCNode.它提供节点增删,包含,提供节点缩放,每个节点有一个照相机,提供动画支持,也就是说每一个从CCNode派生的类都可以执行动画操作;

抱歉!评论已关闭.