22、Cocos2dx 3.0游戏开发找小三之音乐与音效:假如世界上没有了音乐,你的耳朵会孤单吗?

来源:互联网 发布:高洛峰php视频 编辑:程序博客网 时间:2024/04/28 21:15

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30485103


假如世界上没有了音乐,在森林里,我们听不到莺、鸫鸟用清纯、纯净的的声音唱歌;听不到甲虫和蚱蜢拉提琴的声音;听不到小河哗哗啦啦地演奏;也听不到落叶沙沙地歌唱……森林不管怎样郁郁葱葱,怎样美丽也不过只是空荡和孤独。

假如世界上没有了音乐,人们将无法听到莫扎特、贝多芬等音乐天才创作的那些动听的乐曲;人们将不能看到花儿乐队活力四射的表演;音乐剧《金沙》也会离我们而去;升国旗也将没有慷慨激昂的《义勇军进行曲》的陪伴;我们课程表上的"音乐课"也将随之消失……我们的生活将变得单调而乏味。
假如没有了音乐,这个世界将变得不堪设想,生活的美丽和精彩也将黯然失色。
。。。。。。
跑题了O(∩_∩)O哈!

在玩游戏时,视觉、触觉与听觉是玩家与游戏互动的 3 种形式,每一种形式都是十分重要的。
在游戏中实现一套优质的音乐与音效远比制作漂亮的画面简单得多。
只需要开发者完成很少的工作量,就能把游戏的互动效果提高一个层次。

游戏中,我们把声音分为两类。
第一类是音乐,这种类型的声音通常长度较长,适合作为环境音乐(例如游戏的背景音乐)。
由于它的长度较长,同一时刻通常只能播放一首音乐。
第二类是音效,它的特点是长度很短,但是可以同时播放多个音效,拥有很强的表现力。

Cocos2d-x 提供了对音乐与音效的支持,能够十分方便地实现音乐与音效的播放、暂停和循环功能。

使用音效引擎
游戏开发中,我们可以十分方便地启用CocosDenshion音效引擎库。CocosDenshion 位于 cocos\audio目录中。
通常,Cocos2d-x 项目已经包含了 CocosDenshion 库,
当我们需要使用音效引擎时,把引擎头文 件引进来即可。
CocosDenshion 实现了简单易用的 SimpleAudioEngine 类。
为了使用音效引擎,我们只要引入它的头文件即可:
#include "SimpleAudioEngine.h"

引擎支持的音乐格式
CocosDenshion 引擎库实际上是对系统音频 API 的封装,因此它支持的音频文件格式与平台有关。


播放音乐与音效
SimpleAudioEngine与许多 Cocos2d 的功能部件一样,是一个单例类。
我们使用以下代码来访问它的实例:
SimpleAudioEngine::getInstance();
它提供了许多与音乐和音效播放相关的方法,它们使用起来都十分简单。
下面我们介绍最常用的几个方法。
 
预加载
加载音乐和音效通常是一个耗时的过程,为了防止由即时加载产生的延迟导致实际播放与游戏不协调的现象发生,在播放音效和背景音乐之前,需要预加载音乐文件。
通常,我们会在进入游戏场景前的载入阶段调用下面的这两个方法。
void preloadEffect(const char* pszFilePath):用于预加载音效文件,其中 pszFilePath 为音效文件所在的目录位置。void preloadBackgroundMusic(const char* pszFilePath):用于预加载背景音乐,其中 pszFilePath 为音乐文件所在的目录位置。

除了以上几个常用的音频回放的相关方法,Cocos2d-x 还提供了其他十分便捷的控制方法与属性:
void rewindBackgroundMusic():重新播放背景音乐。bool isBackgroundMusicPlaying():返回一个布尔类型的值,表示是否正在播放背景音乐。void unloadEffect(const char*pszFilePath):卸载已预载入的音效文件,以释放系统资源。pszFilePath 参数代表预载入音效文件的路径。当不再使用某个音效文件时,我们可以通过调用此函数释放资源。然而,如果再次使用此音效,引擎会再次载入该音效文件,导致消耗大量的时间。float EffectsVolume 属性:获取或设置音效的音量大小,其取值为 0.0 到 1.0 之间的浮点数。注意,对此属性的设置会影响到所有音效的音量大小。float BackgroundMusicVolume属性: 获取或设置背景音乐的音量大小, 其取值为 0.0 到1.0 之间的浮点数。 与EffectsVolume属性类似,对此属性的设置也会影响到所有背景音乐的音量大小。void end():当不再使用音频引擎时,调用此方法来释放 SimpleAudioEngine 所占用的资源。

音效唯一标识:在同一时刻可能播放着多个音效,因此,为了区分每一个音效,在调用 playEffect 方法播放音效时,会给即将播放的音效分配一个号码,即它的唯一标识。
此后,如果需要暂停、恢复此音效的播放,或是停止播放此音效,都会使用其唯一标识来定位此音效。

使用 SimpleAudioEngine 时,应注意以下三点。
1、播放音效或背景音乐前,一定要提前加载音效或背景音乐文件。
2、在播放背景音乐时,若要切换场景,不需要手动停止背景音乐,Cocos2d-x 会自动把先前场景的背景音乐停止,并播放新场 景中的背景音乐(如果新场景会播放新的背景音乐的话)。
3、在退出后且不再需要音乐时,要调用 end 方法来释放引擎占用的资源。

郝萌主友情提示:
生活中,音乐是那么不可缺少啊!因为有了音乐的陪伴,我们的世界才变的丰富多彩。
多听音乐,乐观生活、、、

3 0
原创粉丝点击