zoukankan      html  css  js  c++  java
  • 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类的学习就先到这里了。

  • 相关阅读:
    mysql 历史版本下载
    mysql 5.7 版本 You must reset your password using ALTER USER statement before executing this statement报错处理
    5.7 zip 版本的安装 以及遇到的坑
    mysql 5.6zip版本的卸载与5.7 zip 版本的安装
    mysql数据库的备份与还原
    本地Navicat连接docker里的mysql
    docker修改数据库密码
    docker 在push镜像到本地registry出现的500 Internal Server Error
    linux 没有界面内容显示不全解决办法
    json与map互相转换
  • 原文地址:https://www.cnblogs.com/atong/p/3270745.html
Copyright © 2011-2022 走看看