在游戏中,音效是一个不可或缺的部分,它可以为我们的游戏增加效果。音效在游戏中一般分为长时间的背景音乐和短促的特效音乐。Cocos2D-x支持多种常见音乐格式(mp3、wav等)。

Cocos2D-x提供了一个非常简单的跨平台声音引擎,它被包含在CocosDenshion库(编译生成libCocosDenshion.lib)中,目录结构如下:  

上图可以看出,Cocos2D-x的声音引擎支持多个平台,我们这里使用的是win32平台。

在include目录中有一个SimpleAudioEngine.h,这就是Cocos2D-x声音引擎的定义的头文件,不同的平台需要实现头文件中的接口函数。

下面我们查看SimpleAudioEngine定义了哪些接口,如下:

//定义背景音乐接口

void preloadBackgroundMusic(const char* pszFilePath):预加载背景音乐文件

void playBackgroundMusic(const char* pszFilePath, bool bLoop = false):播放背景音乐

void stopBackgroundMusic(bool bReleaseData = false):停止播放背景音乐

void pauseBackgroundMusic():暂停播放背景音乐

void resumeBackgroundMusic():恢复播放背景音乐

void rewindBackgroundMusic():重新播放背景音乐

bool isBackgroundMusicPlaying():是否在播放背景音乐

void setBackgroundMusicVolume(float volume):设置背景音乐音量大小

//定义特效音乐接口

void preloadEffect(const char* pszFilePath):预加载特效音乐

void unloadEffect(const char* pszFilePath):卸载特效音乐

unsigned int playEffect(const char* pszFilePath, bool bLoop = false):播放特效音乐

void pauseEffect(unsigned int nSoundId):暂停播放指定特效音乐

void pauseAllEffects():暂停播放所有特效音乐

void resumeEffect(unsigned int nSoundId):恢复播放指定特效音乐

void resumeAllEffects():恢复播放所有特效音乐

void stopEffect(unsigned int nSoundId):停止播放指定特效音乐

void stopAllEffects():停止播放所有特效音乐

void setEffectsVolume(float volume):设置特效音乐音量大小

以上可知,SimpleAudioEngine接口的定义确实简单,值得提及的是特效音乐支持多特效播放。  在TestCpp工程的CocosDeshionTest测试项中有音效使用的实例代码,可以进行参考学习。

-------------------------------------------------------------------------------------------------------------------

注:本人在本博客的原创文章采用创作共用版权协议http://creativecommons.org/licenses/by-nc-sa/2.5/cn/), 要求署名、非商业用途和保持一致。要求署名包含注明我的网名及文章来源(我的博客地址:http://www.cnblogs.com/binbingg)。

[原创]cocos2d-x研习录-第三阶 背景音乐和音效的更多相关文章

  1. [原创]cocos2d-x研习录-第三阶 特性之物理引擎

    游戏物理引擎是指在游戏中涉及物理现象的逻辑处理,它用于模拟现实世界的各种物理规律(如赛车碰撞.子弹飞行.物体掉落等),让玩家能够在游戏中有真实的体验. Cocos2D-x中支持Box2D和Chipmu ...

  2. [原创]cocos2d-x研习录-第三阶 特性之粒子系统

    我想接触过游戏引擎的同学,对粒子系统应该不会陌生.它用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题.粒子系统在游戏中有着非常广泛的应用,可以模拟很多现象,如火花.爆炸.烟雾. ...

  3. [原创]cocos2d-x研习录-第三阶 多分辨率适配器

    在移动终端(智能手机)平台下开发游戏一般都会涉及到屏幕多分辨率适配问题,原因是手机款式多种多样,不同的款式存在有不同的尺寸,即使尺寸相同又可能存在不同的分辨率. 手机屏幕尺寸:指手机屏幕对角线长度. ...

  4. [原创]cocos2d-x研习录-第三阶 特性之瓦片地图集

    由于一张大的世界地图或背景图片往往可以由屈指可数的几种地形来表示,每种地形对应于一张小的图片,我们称这些小的地形图片为瓦片.把这些瓦片拼接在一起,组合成一个完整的地图,这就是瓦片地图集的基本原理. C ...

  5. [原创]cocos2d-x研习录-第三阶 特性之调度器

    在游戏中,经常会周期执行一些检测.操作或更新一些数据等,我们称之为调度.Cocos2D-x中将调度封装为类CCScheduler,方便在游戏开发中使用.我们一起来学习一下,CCScheduler具有哪 ...

  6. [原创]cocos2d-x研习录-第三阶 特性之动作

    在前面的Cocos2D-x的概念类中,我们了解到节点类CCNode.导演类CCDirector.场景类CCScene.布景层类CCLayer和精灵类CCSprite等,这些类都是构成游戏画面的基本元素 ...

  7. [原创]cocos2d-x研习录-第三阶 特性之按键与虚拟键盘

    Cocos2D-x引擎支持按键事件,它能检测设备的键盘输入并处理相应的事件.而基于不同操作系统的移动设备,可供用户操作的按键数量和功能都存在差异.   Cocos2D-x使用CCKeypadDeleg ...

  8. [原创]cocos2d-x研习录-第三阶 特性之加速度传感器

    智能手机的游戏与应用中,也经常会用到加速传感器事件来丰富用户的体验,比如飞翔的企鹅(英文AirPenguin)游戏就是通过加速度传感器来控制角色的移动和跳跃方向.下面学习Cocos2D-x中如何使用加 ...

  9. [原创]cocos2d-x研习录-第三阶 特性之触屏

    游戏跟视频最大的区别就是互动,而手游(基于智能手机)主要靠触摸屏幕.重力传感和虚拟键盘等方式实现互动.这里主要记录Cocos2D-x对玩家触屏操作的处理. 在Cocos2D-x中触屏分为单点触屏和多点 ...

随机推荐

  1. It will affect staff as well.

    Premier Foods has reduced its number of suppliers dramatically in the last 12 months. In 2013 it mad ...

  2. Dapper学习笔记(4)-事务

    Dapper中对事务的处理也非常简单,如下代码所示: private void DapperTransaction() { using (IDbConnection con = OpenConnect ...

  3. 有关javascript的性能优化(合理的管理内存)

    使用具备垃圾收集机制的语言编写程序,开发人员一般不必操心内存管理的问题.但是,Javascript在进行内存管理及收集时面临的问题是有点与众不同.其中最主要的一个问题是分配给Web浏览器的可用内存数量 ...

  4. 为什么 input 元素能用 width 属性

    前几天在是写网页的时候发现input可以设置宽高,很疑惑,上网查了之后发现: 简单的认为 input 就是 inline 元素是片面的.元素默认以何种 display 属性值显示出来,这个其实更多的时 ...

  5. [置顶] Android 2016新技术

    版权声明:分享技术,传播快乐.如果本博客对你有帮助,请在我的博客首页为我打赏吧! 2016你需要了解Android有以下新兴的技术与框架,有些也许还不成熟,但是你应该去了解下,也许就是未来的方向. K ...

  6. php生成html文件的多种方法介绍

    我经常会在网上看到有人问怎么将整个动态的网站静态化,其实实现的方法很简单.  代码如下 复制代码 <?php//在你的开始处加入 ob_start(); ob_start(); //以下是你的代 ...

  7. C语言程序设计第四次作业

    态度决定一切,我依然要说这句话,每次同学们提交的作业,我都会认真评阅,相比实验课而言,可以有更充足的时间来发现问题,很多同学的代码依然会存在一些语法错误或者考虑不周全的现象,我提出了,那么,你认真看了 ...

  8. MySQL数据库6 -查询基础,简单查询,条件查询,对查询结果排序

    一.SELECT语句 SELECT COL1,COL2,....COLn FROM TABLE1,TABLE2,....TABLEn [WHERE CONDITIONS] -- 查询条件 [GROUP ...

  9. android基础(五)网络编程

    android 的网络编程一般可以分为两种:基于Socket的,基于Http的. 一.socket与Http socket封装了TCP/IP协议,TPC/IP协议是传输层协议,主要解决数据如何在网络中 ...

  10. 普通硬件就能破解GSM A5加密算法

    如果你还在使用基于早期信号标准的GSM手机,那么你最好在使用手机的过程中小心一点了.因为根据国外媒体的最新报道,安全研究专家通过测试发现,他们只需要使用三张NVIDIA GeForce GTX690显 ...