在游戏中,我们把声音分为两类。第一类是音乐,这种类型的声音通常长度较长,适合作为环境音乐(例如游戏的背景音乐)。由于它的长度较长,同一时刻通常只能播放一首音乐。第二类是音效,它的特点是长度很短,但是可以同时播放多个音效,拥有很强的表现力。
在游戏开发中,我们可以十分方便地启用CocosDenshion音效引擎库。CocosDenshion位于Cocos2d-x目录下的"CocosDenshion"目录中。通常,Cocos2d-x项目已经包含了CocosDenshion库,当我们需要使用音效引擎时,把引擎头文件引进来即可。
CocosDenshion实现了简单易用的SimpleAudioEngine类。为了使用音效引擎,我们只要引入它的头文件即可:
- #include"SimpleAudioEngine.h"
CocosDenshion移植自Cocos2d-iPhone中的同名库。实际上,Cocos2d-iPhone中的CocosDenshion实现了3个音效引擎,由底层到高级分别是CDSoundEngine、CDAudioManager和SimpleAudioEngine,其中前两个较为底层的引擎用于高级音频的开发,例如实现3D混音等。然而,对于普通开发者而言,SimpleAudioEngine已经足以满足大部分游戏开发的需求了。底层的音效引擎封装自OpenAL音频接口,从而实现了十分灵活、高效的音频回放引擎。然而,OpenAL只能被OS X(包括iOS)平台支持,其他平台下是没有类似接口的,因此Cocos2d-x不得不舍弃CDSoundEngine和CDAudioManager这两个底层引擎,只保留了最常用的SimpleAudioEngine。
CocosDenshion引擎库实际上是对系统音频API的封装,因此它支持的音频文件格式与平台有关。
平台音乐格式:
1,Android: mp3、mid、ogg和wav,可以播放android.media. MediaPlayer所支持的所有格式
2,? iOS:aac、caf、mp3、m4a和wav, 可以播放AVAudioPlayer, 所支持的所有格式
3,Windows: mid、mp3和wav
平台音效格,式:
1,Android:ogg和wav, 对wav的支持并不完美
2, iOS:caf和wav,可以播放Cocos2d-iPhone,CocosDenshion所支持的所有格式
3,Windows:mid和wav
SimpleAudioEngine与许多Cocos2d的部件一样,是一个单例类。我们使用以下代码来访问它的实例:
SimpleAudioEngine::sharedEngine();
加载音乐和音效通常是一个耗时的过程,为了防止由即时加载产生的延迟导致实际播放与游戏不协调的现象发生,在播放音效和背景音乐之前,需要预加载音乐文件。通常,我们会在进入游戏场景前的载入阶段调用下面的这两个方法。