3.4 Cocos2d-x核心概念
Cocos2d-x中有很多概念,这些概念多来源于动画、动漫和电影等行业,例如导演、场景和层等概念,当然也有些传统的游戏的概念。Cocos2d-x中的核心概念如下:
●导演
●场景
●层
●节点
●精灵
●菜单
●动作
●效果
●粒子运动
●地图
●物理引擎
本节我们介绍导演、场景和层概念以及对应的类。由于节点概念很重要,我们会在下一节继续介绍,而其他的概念则在后面的章节中介绍。
3.4.1 导演
导演类Director(v3.0之前是CCDirector)用于管理场景对象,采用单例设计模式,在整个工程中只有一个实例对象。由于单例模式能够保存一致的配置信息,便于管理场景对象。获得导演类Director实例语句如下:
auto director = Director::getInstance();
导演对象职责如下:
●访问和改变场景;
●访问Cocos2d-x的配置信息;
●暂停、继续和停止游戏;
●转换坐标。
Director类图如图3-12所示。
图3-12 Director类图
从图3-12所示的类图中还可以看到它有一个子类:DisplayLinkDirector。
3.4.2 场景
场景类Scene(v3.0之前是CCScene)是构成游戏的界面,类似于电影中的场景。场景大致可以分为以下几类:
●展示类场景:播放视频或简单的在图像上输出文字,来实现游戏的开场介绍、胜利和失败提示、帮助介绍。
●选项类场景:主菜单、设置游戏参数等。
●游戏场景:这是游戏的主要内容。
场景类Scene的类图如图3-13所示。从类图可见,Scene继承了Node类,Node是一个重要的类,很多类都从Node类派生而来,其中包括Scene、Layer等。
图3-13 Scene类图
3.4.3 层
层是我们编写游戏程序的重点,我们大约会花费99%以上的时间在层上实现游戏内容。层的管理类似于Photoshop中的图层,它也是一层一层叠在一起。图3-14是一个简单的主菜单界面,它是由三个层叠加实现的。
图3-14 层叠加
为了让不同的层可以组合产生统一的效果,这些层基本上都是透明或者半透明的。层的叠加是有顺序的,从上到下依次是:菜单层→精灵层→背景层。Cocos2d-x是按照这个次序来叠加界面的。这个次序同样用于事件响应机制,即菜单层最先接收到系统事件,然后是精灵层,最后是背景层。在事件的传递过程中,如果有一个层处理了该事件,则排在后面的层将不再接收到该事件了。每一层又可以包括很多各式各样的内容要素:文本、链接、精灵、地图等。
层类Layer的类图如图3-15所示。
图3-15 Layer类图