重开发人员的劳动成果,转载的时候请务必注明出处: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 的封装,因此它支持的音频文件格式与平台有关。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFvbWVuZ3podQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


播放音乐与音效
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 方法来释放引擎占用的资源。

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

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

  1. 6、Cocos2dx 3.0游戏开发找小三之游戏的基本概念

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...

  2. 13、Cocos2dx 3.0游戏开发找小三之3.0中的Director :郝萌主,一统江湖

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706967 游戏中的基本元素 在曾经文章中.我们具 ...

  3. 1、Cocos2dx 3.0游戏开发找小三之前言篇

    尊重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 前言 Cocos2d-x 是一个通用 ...

  4. 3、Cocos2dx 3.0游戏开发找小三之搭建开发环境

    尊重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27107295 搭建开发环境 使用 Cocos2d- ...

  5. 12、Cocos2dx 3.0游戏开发找小三之3.0中的生命周期分析

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706303 生命周期分析 在前面文章中我们执行了第 ...

  6. 23、Cocos2dx 3.0游戏开发找小三之粒子系统:你那里下雪了吗?

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30485919 春雨惊春清谷天,夏满芒夏暑相连, 秋处 ...

  7. 19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30478985 流动的水没有形状.漂流的风找不到踪迹. ...

  8. 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27705613 容器 3.0版本号之前Cocos2d- ...

  9. 7、Cocos2dx 3.0游戏开发找小三之3.0版本号的代码风格

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27691337 Cocos2d-x代码风格 前面我们已 ...

随机推荐

  1. 本地编译全志R系列的步骤(Ubuntu16.04.4版本)

    本地编译全志R系列的步骤(Ubuntu16.04.4版本) 2018/6/14 9:32 版本:V1.0 0.获取全志R系列的Android源码包: 请通过渠道/代理商/方案公司获取全志R系列的And ...

  2. Android ListView动态刷新某项Item

    使用ViewHolder来刷新某项数据,而不用每次都全部刷新数据. 继承BaseAdapter,新建ViewHolder类. public class TestListAdapter extends ...

  3. 解决opencv在pycharm中无代码自动提示的bug

    2018-03-0422:19:39 首先,估计这不是bug 可能是我自己误操作导致的,但是让我搞了好久才搞定,实在是苦恼 如图已实现功能,百度里有很多朋友出现了,这个无代码提示的问题 大概是这样的, ...

  4. Xilinx FPGA编程技巧之常用时序约束详解

    1.   基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取.最普遍的三种路径为: 输入路径(Input Path),使用输入约束 寄存器到寄存器路径(Register-to ...

  5. OpenGL坐标系之间的转换 http://blog.csdn.net/sac761/article/details/52179585

    1. OpenGL 渲染管线 OpenGL渲染管线分为两大部分,模型观测变换(ModelView Transformation)和投影变换(Projection Transformation).做个比 ...

  6. java_线程类的基本功能

    Thread类是实现了Runnable接口 其方法有: start()开始:开始线程 run()跑:线程内容 currentThread()现在的线程:返回当前线程 getName():获取线程名 s ...

  7. linux shell脚本学习笔记一

    一.文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tm ...

  8. [angular1.6]Error: "transition superseded" ui-router 在angular1.6 报错误问题解决

    在angular1.6版本里,使用ui-router如果报这个错误,可以将ui-router升级到最近版本即可.ui-router version v0.4.2

  9. 洛谷——P1073 最优贸易

    P1073 最优贸易 n 个城市间以 m 条有向道路连接, 小 T 从 1 号城市出发, 将要去往 n 号城市.小 T 观察到一款商品 Z 在不同的城市的价格可能不尽相同,小 T 想要在旅行中的某一个 ...

  10. Fleecing the Raffle(NCPC 2016 暴力求解)

    题目: A tremendously exciting raffle is being held, with some tremendously exciting prizes being given ...