本章将介绍cocos2d游戏引擎中最基本的一些构成要素。在今后,你会经常使用这些类。所以,了解哪些类是可用的,并理解它们之间的协作方式,将有助于你编写出更出色的游戏。有了这些知识作为基础,你会发现用cocos2d编写游戏比想象中简单得多。
本章附带一个名为Essentials的Xcode项目,其中包含了在此讨论的所有内容以及一些额外的示例。源代码中添加了大量的注释,你可以把它们当作本书附录来阅读。
本章将首先对cocos2d游戏引擎的架构进行高度概括。由于在不同游戏引擎中,游戏对象的管理方式以及在屏幕上的显现方式各不相同,因此最好先对cocos2d中每个构成元素的意义以及它们的组合方式有所理解。
3.1 cocos2d中的单件类
cocos2d充分利用了Singleton设计模式。鉴于它常常成为开发者热议的话题,所以我想有必要在此提一下。从理论上讲,单件(Singleton)就是一个普通的类,但它在应用程序的整个生命周期中只被实例化一次。为了确保这一点,cocos2d采用静态方法来创建并访问这个对象实例。所以,要访问单件对象,不应使用alloc/init或静态的自动释放初始化器,而应该调用以shared开头的方法。下面列举cocos2d中一些最常用的单件类以及访问它们的方法:
CCActionManager* sharedManager = [CCActionManager sharedManager];
CCDirector* sharedDirector = [CCDirector sharedDirector];
CCSpriteFrameCache* sharedCache = [CCSpriteFrameCache
sharedSpriteFrameCache];
CCTextureCache* sharedTexCache = [CCTextureCache sharedTextureCache];
CCTouchDispatcher* sharedDispatcher = [CCTouchDispatcher
sharedDispatcher];
CDAudioManager* sharedManager = [CDAudioManager sharedManager];
SimpleAudioEngine* sharedEngine = [SimpleAudioEngine sharedEngine];