Cocos2D-x权威指南
上QQ阅读APP看书,第一时间看更新

3.1 节点类

节点类(CCNode)是Cocos2D-x中的主要类,继承自CCObject,继承关系如图3-2所示。

图3-2 CCNode类的继承关系

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

CCNode类包括的主要功能如下:

  • 每个节点都可以含有子节点,这点本书也会在后面给出示例。
  • 节点含有周期性回调的方法(Schedule、Unschedule等)。关于周期性回调方法,本章将会有一节单独讲解,如果现在不了解,可以跳过这段内容。
  • 可以含有动作(CCAction)。

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

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

  • 重写初始化的方法和周期性回调方法。
  • 在时间线上控制回调。
  • 重写渲染的绘制方法。

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

下面分别介绍CCNode类的成员数据和函数。