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