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