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

  节点类(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类的学习就先到这里了。

posted @ 2013-08-20 18:04  【Winco】  阅读(1558)  评论(0编辑  收藏  举报