Cocos2d-x学习笔记(五)之 节点类CCNode

news/2024/7/7 12:52:31

  节点类(CCNode) 是Cocos2D-x 中的主要类, 继承自CCObject,节点类的继承关系如下:

  CCNode-->CCObject-->CCCopying。

  任何需要画在屏幕上的对象都是节点类。最常用的节点类包括场景类(CCScene)、布景层类(CCLayer)、人物精灵类(CCSprite)、菜单类(CCMenu)。CCNode 类包括的主要功能如下:

  1)每个节点都可以含有子节点。

  2)节点含有周期性回调的方法(Schedule、Unschedule 等)。

  3)可以含有动作(CCAction)。

  CCNode 可以为它自己和它的子节点添加额外的功能。无论是CCNode 运行的动作(CCAction),还是设置的旋转角度和位置等属性,父节点的设置都可以传递到子节点上,这点在一些游戏的开发中可以使我们的管理更轻松。比如某些纵版射击游戏,玩家控制的主角飞机需要携带子机,子机的移动位置要随着主机一起移动,我们就可以把子机设置为主机的子节点,这样,在设置位置的时候,只需要设置主机的位置就可以了,大大减少了程序员需要处理的内容,提高了代码的清晰度和可读性。

  由于CCNode 类不自带贴图,其实在屏幕上看不到任何节点类的效果,所以一般使用CCNode 类的场合有两个:第一个情况就是,需要一个父节点来管理一批子节点,这时候可以设置一个“无形”的子节点来管理子节点;另一种情况就是有时需要自己定义一个在屏幕上显示的对象,这时候让新定义的这个类继承自CCNode。一个类继承自CCNode 类,说明它有如下特点:

  1)重写初始化的方法和周期性回调方法。

  2)在时间线上控制回调。

  3)重写渲染的绘制方法。

  CCNode 类不含有贴图,它可以进行位置的平移、大小的伸缩变化、旋转变化。在网格特效使用的时候,网格特效可以获得屏幕中绘制的内容,并且对获得的屏幕内容进行渲染。这点在游戏中需要一些全屏特效的时候可以使用。

  成员数据(公共成员数据):

  m_bIsRunning:这个节点是否在运行。

  m_bIgnoreAnchorPointForPosition:是否忽略锚点的位置。

  成员函数

  getZOrder:获得兄弟节点间z 轴顺序。

  getVertexZ:获得z 轴坐标。

  setVertexZ:设置z 坐标。

  getRotation:获得旋转角度(角度制)。

  setRotation:设置旋转角度(角度制)。

  getScale:获得缩放系数。

  setScale:设置缩放系数。

  getScaleX:获得x 轴缩放系数。

  setScaleX:设置x 轴缩放系数。

  getScaleY:获得y 轴缩放系数。

  setScaleY:设置y 轴缩放系数。

  getPosition:获得坐标位置。

  setPosition:设置坐标位置。

  getPositionX:获得x 坐标值。

  setPositionX:设置x 坐标值。

  getPositionY:获得y 坐标值。

  setPositionY:设置y 坐标值。

  getSkewX:获得x 轴扭曲效果系数。

  setSkewX:设置x 轴扭曲效果系数。

  getSkewY:获得y 轴扭曲效果系数。

  setSkewY:设置y 轴扭曲效果系数。

  getChildren:获得子节点数组。

  getChildrenCount:获得子节点数量。

  getCamera:获得节点摄像机。

  getGrid:获得网格对象。

  setGrid:设置网格对象。

  isVisible:获得是否可见。

  setVisible:设置是否可见。

  getAnchorPoint:获得锚点相对坐标。

  setAnchorPoint:设置锚点相对坐标。

  getAnchorPointInPoints:获得锚点绝对坐标。

  getContentSize:获得节点的尺寸。

  setContentSize:设置节点的尺寸。

  isRunning:获得节点是否在运行。

  getParent:获得父节点。

  setParent:设置父节点。

  isIgnoreAnchorPointForPosition:是否忽略锚点位置。

  ignoreAnchorPointForPosition:设置是否忽略锚点位置。

  getTag:获得标签值。

  setTag:设置标签值。

  getUserData:获得用户数据。

  setUserData:设置用户数据。

  getUserObject:获得用户数据对象。

  setUserObject:设置用户数据对象。

  getActionManager:获得动作管理对象。

  setActionManager:设置动作管理对象。

  getScheduler:获得调度对象。

  setScheduler:设置调度对象。

  getShaderProgram:获得渲染参数对象。

  setShaderProgram:设置渲染参数对象。

  onEnter:进入节点(场景类)的对象。

  onEnterTransitionDidFinish:场景等切换动画播放完毕进入。

  onExit:离开节点(场景类)的对象。

  onExitTransitionDidStart:场景等切换动画播放完毕离开。

  addChild:添加子节点,参数可以加入z 轴排序参数,标签值。

  removeFromParentAndCleanup:从父节点删除本节点,参数决定是否清除本节点。

  removeChild:删除自动节点,参数为节点对象和是否清除本节点。

  removeChildByTag:根据标签值删除节点,参数为标签和是否清除本节点。

  removeAllChildrenWithCleanup:删除所有子节点,参数决定是否清除本节点。

  getChildByTag:根据标签值获得子节点。

  reorderChild:根据z 轴值重新排列子节点,参数为节点和z 轴值。

  sortAllChildren:在渲染前排列所有节点, 可以被reorderChild 和addChild 代替。除非在某一帧里有节点的添加和删除,否则不会自动调用。

  cleanup:停止所有的动作和调度。

  draw:渲染函数。

  visit:递归方法遍历到本节点和子节点并绘制它们。

  runAction:运行动作。

  stopAllActions:结束所有动作。

  getActionByTag:根据动作标签获得动作。

  stopAction:结束动作,传入的参数是动作指针。

  stopActionByTag:根据标签值结束动作。

  numberOfRunningActions:获得运行动作数量。

  transform:运行矩阵变化。

  convertToNodeSpace:转换为节点空间坐标,相对于节点的左下角,与锚点无关。

  convertToWorldSpace:转换为世界空间(全局绝对)坐标,与锚点无关。

  convertToNodeSpaceAR:转换为节点空间坐标,传入值和输出值都相对于锚点。

  convertToWorldSpaceAR:转换为世界空间坐标,传入值和输出值都相对于锚点。

  convertTouchToNodeSpace:从触屏对象转换为节点空间坐标。

  convertTouchToNodeSpaceAR:从触屏对象转换为节点空间坐标,传入值和输出值都相对于锚点。

  nodeToParentTransform:返回从本地节点坐标到父节点空间坐标的矩阵变换仿射矩阵。

  parentToNodeTransform:返回从父节点空间坐标到本地节点坐标的矩阵变换仿射矩阵。

  nodeToWorldTransform:返回从本地节点坐标到世界坐标的矩阵变换仿射矩阵。

  worldToNodeTransform:返回从世界坐标到本地节点坐标的矩阵变换仿射矩阵。

  以上就是CCNode的主要的成员函数,好了,CCNode类的学习就先到这里了。

转载于:https://www.cnblogs.com/atong/p/3270745.html


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

相关文章

C#操作PDF文档--PDFBox读取pdf文档,O2S.Components.PDFRender4NET生成缩略图

一、下载PDFBox 访问网址http://sourceforge.net/projects/pdfbox/ 二、引用动态链接库 解压缩下载的PDFBox,找到其中的Bin目录,需要在项目中添加引用的dll文件有: IKVM.GNU.Classpath.dll PDFBox-0.7.3.dll FontBo…

《Linux命令行与shell脚本编程大全》 第十四章 学习笔记

第十四章&#xff1a;呈现数据 理解输入与输出 标准文件描述符 文件描述符缩写描述0STDIN标准输入1STDOUT标准输出2STDERR标准错误1.STDIN 代表标准输入。对于终端界面来说&#xff0c;标准输入是键盘 使用输入重定向符号&#xff08;<&#xff09;时&#xff0c;Linux会用重…

编程训练:潜伏(9528)

题目&#xff1a;记录长度为N&#xff08;1 < N < 100000&#xff09;&#xff0c;全部由数字构成&#xff0c;需要多次查询在该记录的第i位后出现的第一个两位素数。 输入第一行&#xff0c;一个全部由数字构成的字符串&#xff0c;长度小于100000。 第二行&#xff0c…

android ListView实现圆角

首先呢&#xff0c;我们还是看几个示图&#xff1a;&#xff08;这是360推出的一款天气预报APP(墨迹)&#xff0c;很不错的一款哦&#xff0c;这里为她们做一个免费广告&#xff0c;哈哈.&#xff09; 这种带有圆角的listview 看起来很棒吧&#xff0c;确实是这样&#xff0c;其…

现代dump技术及保护措施

现代dump技术及保护措施[Ms-Rem]&#xff08;上&#xff09;现代dump技术及保护措施本文目的我们都喜欢使用免费的软件&#xff0c;这也就意味着需要有人对它们进行破解。而破解的时候就要对付各种各样的壳和protectors。壳的工作原理和脱壳的基本方法在《Packer终结篇》&#…

asp.net获取网站绝对路径

网站在服务器磁盘上的物理路径: HttpRuntime.AppDomainAppPath虚拟程序路径: HttpRuntime.AppDomainAppVirtualPath任何于Request/HttpContext.Current等相关的方法, 都只能在有请求上下文或者页面时使用. 即在无请求上下文时,HttpContext.Current为null. 而上面提到的方法一直…

注释PEMaker6源代码(一)

这两天看了精华8的“向导入表中注入代码“这篇文章&#xff0c;对阅读PEMaker6源代码进行了部分注释&#xff0c;要不总是忘了哪一部分是什么功能&#xff0c;为了增加点发帖量&#xff0c;将注释过的几个类逐一整理后发布&#xff0c;老鸟就无需看了,也是为了自己加强学习。 这…

MBR和DBR详细分析

系统2K PRO SP4,C盘采用NTFS,用WinHex提取MBR和DBR,拿IDA分析的.关键在DBR几处不明白. 1.一点预备知识:主引导扇区代码&#xff08;MBR&#xff09;代码:;; ; MBR( Master Boot Record )主引导记录包含两部分的内容&#xff0c;前446字节为启动代码及数据&#xff0c;而; 从446…