(转载)cocos2d-X学习之主要类介绍:节点CCNode

news/2024/7/5 8:14:59

        转载之:http://www.cnblogs.com/lhming/archive/2012/07/01/2572227.html

      

首先是类结构: 

wps_clip_image-19960

 

可以看到CCNode 几乎是游戏中处理的大部分类的父类,其主要有以下函数:

 virtual bool init(); //初始化CCNode;

 static CCNode * create(void);  //分配空间且初始化一个节点

virtual int  getZOrder (void) //获取节点的顺序

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派生的类都可以执行动画操作;

 


http://www.niftyadmin.cn/n/3094100.html

相关文章

robotframwork接口测试(三)—HttpLibrary.HTTP安装

1. 安装&#xff1a; 1&#xff09;可以用命令&#xff1a;pip install robotframework-httplibrary&#xff08;或pip install --upgrade robotframework-httplibrary&#xff09;&#xff1b;也可以自己安装。请注意&#xff0c;他是依赖4个其他的库&#xff0c;如下图所示 …

(转载)cocos2d-X学习之主要类介绍:精灵角色(CCSprite)

转载之&#xff1a;http://www.cnblogs.com/lhming/archive/2012/07/01/2572236.html CCSprite是一副2D图像&#xff0c;CCSprite可以通过图像或者图像中的一个矩形子区域创建 如果它的父节点或者任意继承树上的节点是CCspriteBatchNode则具有下述特性: 父节点是CCSpriteBatch…

Linux 学习日记 6: 简单文本处理

2019独角兽企业重金招聘Python工程师标准>>> 1.tr 命令 tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。 使用方式&#xff1a; tr [option]... SET1 [SET2] 常用的选项有&#xff1a; 选项 说明 -d 删除和set1匹配的字符&am…

求不小于N且二进制串包含K个1的最小的数字

给定正整数N&#xff0c;求一个最小正整数M&#xff08;M>N&#xff09;&#xff0c;使得M中连续1的个数不小于K。 输入格式&#xff1a;N K 其中N为大整数&#xff0c;只能进行字符串处理 首先要把N化为二进制串&#xff0c;考察这个二进制串的最后K位&#xff1b; 直接把这…

(转载)cocos2d-X学习之引擎源码目录结构介绍

转载之&#xff1a;http://www.cnblogs.com/lhming/archive/2012/07/01/2572262.html Cocos2d-x的目录结构如下&#xff1a; 目录的具体结构介绍如下&#xff1a; Box2D&#xff1a;物理引擎Box2D的相关源文件 Chipmunk&#xff1a;物理引擎chipmunk的相关源文件 cocos2dx&a…

Java 反射(二)

作者&#xff1a;郑剑锋链接&#xff1a;https://www.zhihu.com/question/24304289/answer/147529485来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。首先我们了解一下JVM&#xff0c;什么是JVM&#xff0c;Java的虚拟机…

简单提高数据库查询效率的办法

为什么80%的码农都做不了架构师&#xff1f;>>> 全局表 所谓全局表&#xff0c;就是有可能系统中所有模块都可能会依赖到的一些表。比较类似我们理解的“数据字典”。为了避免跨库join查询&#xff0c;我们可以将这类表在其他每个数据库中均保存一份。同时&#xf…

(转载)cocos2d-X学习之坐标系统

转载之&#xff1a;http://www.cnblogs.com/lhming/archive/2012/07/01/2572272.html 在cocos2d-x中有两种坐标系&#xff0c;分别是屏幕坐标系和open gl坐标系。 屏幕坐标系&#xff1a;x轴朝右&#xff0c;y轴朝下。默认原点在左上角&#xff0c;如下图&#xff1a; 这个是一…