微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cocos2dx音效引擎

在游戏中,我们把声音分为两类。第一类是音乐,这种类型的声音通常长度较长,适合作为环境音乐(例如游戏的背景音乐)。由于它的长度较长,同一时刻通常只能播放一首音乐。第二类是音效,它的特点是长度很短,但是可以同时播放多个音效,拥有很强的表现力。
在游戏开发中,我们可以十分方便地启用CocosDenshion音效引擎库。CocosDenshion位于Cocos2d-x目录下的"CocosDenshion"目录中。通常,Cocos2d-x项目已经包含了CocosDenshion库,当我们需要使用音效引擎时,把引擎头文件引进来即可。
CocosDenshion实现了简单易用的SimpleAudioEngine类。为了使用音效引擎,我们只要引入它的头文件即可:

  1. #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();


加载音乐和音效通常是一个耗时的过程,为了防止由即时加载产生的延迟导致实际播放与游戏不协调的现象发生,在播放音效和背景音乐之前,需要预加载音乐文件。通常,我们会在进入游戏场景前的载入阶段调用下面的这两个方法


    1,,voidpreloadEffect(constchar*pszFilePath):用于预加载音效文件,其中pszFilePath为音效文件所在的目录位置。
  1. 2,voidpreloadBackgroundMusic(char*pszFilePath):用于预加载背景音乐,其中pszFilePath为音乐文件所在的目录位置。





    voidrewindBackgroundMusic():重新播放背景音乐。
  1. boolisBackgroundMusicPlaying():返回一个布尔类型的值,表示是否正在播放背景音乐。
  2. voidunloadEffect(char*pszFilePath):卸载已预载入的音效文件,以释放系统资源。pszFilePath参数代表预载入音效文件的路径。当不再使用某个音效文件时,我们可以通过调用函数释放资源。然而,如果再次使用此音效,引擎会再次载入该音效文件,导致消耗大量的时间。
  3. floatEffectsVolume属性获取或设置音效的音量大小,其取值为0.0到1.0之间的浮点数。注意,对此属性的设置会影响到所有音效的音量大小。
  4. floatBackgroundMusicVolume属性获取或设置背景音乐的音量大小,其取值为0.0到1.0之间的浮点数。与EffectsVolume属性类似,对此属性的设置也会影响到所有背景音乐的音量大小。
  5. voidend():当不再使用音频引擎时,调用方法来释放SimpleAudioEngine所占用的资源。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐