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

使用音效引擎

我们可以使用Cocos2d-x自带的CocosDension库来使用声音引擎。CocosDesion实现了简单易用的SimpleAudioEngine类,为了使用它,我们只需引入他的头文件即可:

#include "SimpleAudioEngine.h"

支持平台与格式

CocosDesion支持的音乐格式如下:

平台 支持的常见文件格式 备注
Android mp3, mid, oggg, wav 可以播放android.media.MediaPlayer所支持的所有格式
iOS aac, caf, mp3, m4a, wav 可以播放AVAudioPlayer所支持的所有格式
Windows mid, mp3, wav

CocosDesion支持的音效格式如下:

平台 支持的常见文件格式 备注
Android oggg, wav 对wav的支持不完美
iOS caf, m4a 可以播放Cocos2d-iPhone CocosDesion所支持的所有格式
Windows mid, wav

预加载

加载音乐和音效通常是个耗时间的过程,因此为了防止由加载产生的延时导致实际播放与游戏播放不协调的现象。在播放音效和音乐前,需要预加载音乐文件。

通常我们会在进入场景前调用以下两个方法来预加载文件:

void SimpleAudioEngine::preloadBackgroundMusic(const char* pszFilePath);void SimpleAudioEngine::preloadEffect(const char* pszFilePath);

因为SimpleAudioEngine与许多Cocos2d-x的部件一样,是一个单例类。所以当我们使用以上两个接口时,可以使用以下代码访问其实例:

SimpleAudioEngine::getInstance()->preloadBackgroundMusic( MUSIC_FILE );SimpleAudioEngine::getInstance()->preloadEffect( EFFECT_FILE );

播放与停止

音频引擎提供了播放与停止的接口,以下介绍相应接口和使用方法:

virtual void playBackgroundMusic(const char* pszFilePath, bool bLoop = false); //播放背景音乐,bLoop表示是否要循环播放
virtual unsigned int playEffect(const char* pszFilePath, bool bLoop = false,float pitch = 1.0f, float pan = 0.0f, float gain = 1.0f); //播放音效,bLoop表示是否要循环播放
virtual void stopBackgroundMusic(bool bReleaseData = false); //停止背景音乐
virtual void stopEffect(unsigned int nSoundId); //停止指定音效,nSoundId为音效编号
virtual void stopAllEffects(); //停止所有音效

使用方法:

SimpleAudioEngine::getInstance()->playBackgroundMusic(MUSIC_FILE, true); //播放背景音乐
SimpleAudioEngine::getInstance()->stopBackgroundMusic(); //停止背景音乐
SimpleAudioEngine::getInstance()->stopEffect(_soundId); //停止音效

暂停和恢复

当游戏进入后台时,通常需要暂停播放音乐,当游戏恢复前台运行时,再继续播放音乐。以下介绍几个相关接口以及用法:

virtual void pauseBackgroundMusic(); //暂停背景音乐
virtual void pauseEffect(unsigned int nSoundId); //暂停指定音效,nSoundId为音效编号
virtual void pauseAllEffects(); //暂停所以音效
virtual void resumeBackgroundMusic(); //恢复背景音乐
virtual void resumeEffect(unsigned int nSoundId); //恢复指定音效,nSoundId为音效编号
virtual void resumeAllEffects(); //恢复所有音效

使用方法:

SimpleAudioEngine::getInstance()->pauseEffect(_soundId); //暂停编号为_soundId的音效
SimpleAudioEngine::getInstance()->resumeEffect(_soundId); //恢复编号为_soundId的音效
SimpleAudioEngine::getInstance()->pauseAllEffects(); //暂停所有音效
SimpleAudioEngine::getInstance()->resumeAllEffects(); //恢复所有音效

其他成员

除了以上介绍的方法外,Cocos2d-x还提供了便捷的控制方法与属性:

virtual void setBackgroundMusicVolume(float volume); //设置背景音乐音量
virtual void setEffectsVolume(float volume); //设置音效音量
virtual void rewindBackgroundMusic(); //重新播放背景音乐
virtual bool isBackgroundMusicPlaying(); //返回一个值,表示是否在播放背景音乐

cocos2d-x 声音和音效相关推荐

  1. 5.cocos2dx中关于draw绘图,声音和音效,预加载,播放与停止Vs暂停和恢复,音量控制

     1 draw绘图 头文件 T19Draw.h #ifndef __T19Draw_H__ #define __T19Draw_H__ #include "cocos2d.h" ...

  2. 游戏中重复声音的音效种类划分

    无论什么类型的游戏,在背景音乐中都会出现重复的现象,为了使重复变得悄无声息,让玩家无法察觉,则需要依靠音效的强大功能,具体可分为以下几个方面: 接口声音;这个声音是用来游戏音效接口的,在整个游戏界面声 ...

  3. pygame声音和音效

    [1701H1][穆晨][180312]第153天总结 出来,左键是狗叫,右键猫叫,背景音乐是欢沁 pygame支持的音频文件格式ogg(背景音乐)wab(音效) 播放音效 pygame.mixer. ...

  4. 【Unity游戏开发教程】零基础带你从小白到超神15——声音、音效和视频播放

    文章目录 视频播放(Video Player组件) 第一种,添加Video Player组件播放 第二种,添加原始图像播放 代码控制视频播放(方法跟音频类似) 听声音的组件,Audio Listene ...

  5. 疯狂ios之cocos2d中的声音

    13.13 cocos2d中的声音 任何一个游戏中都不能缺少音乐和音效,苹果公司在iOS系统中提供了两个框架用于播放音乐,分别是AVAudioPlayer和OpenAL.使用AVAudioPlayer ...

  6. 给自己的Unity添加声音文件

    下面说明一下,在Unity 里是怎么样加载声音文件的. Unity同时支持单声道和立体声音频资产. Unity支持导入以下音频文件格式:.aif, .wav, .mp3, 和 .ogg,和以下音轨模块 ...

  7. 8问8答,一篇文章读懂空间音效

    近日,第一届网易集团创新奖评选落下帷幕,网易智企"逼近人耳极限-音频通话"项目从众多参赛作品中脱颖而出,荣获"0-1创新奖"三等奖. 此次获奖的项目诞生于网易智 ...

  8. cocos2dX 之音乐与音效

    今天, 我们来学习cocos2dX里面的音乐和音效, 为什么学他呢, 难道你喜欢看无声电影( 旁白: 我就喜欢关着声音玩), 我们不要管旁白了, 她是个疯子 老规矩, 资源准备好: 一首<故宫神 ...

  9. 游戏音效分类以及运用场景

    游戏音效是玩家在游戏中触发点击按钮.大自然的环境音.打斗声等一系列在游戏中出现的音效声音.音效在游戏中必不可少,不同的游戏场景需要不同的音效加持,虽然游戏音效种类繁多,但是奇亿音乐小编认为最终还是可以 ...

最新文章

  1. C++ OJ 中多行数据输入(大小写转换、通过移位运算实现2的n次方、多组输入,每行输入数量不一样)
  2. Linux那些事儿 之 戏说USB(19)设备的生命线(二)
  3. 《评人工智能如何走向新阶段》后记(再续9)
  4. html 标签、图像、链接、注释、锚点定位、特殊字符
  5. 《C语言编程魔法书:基于C11标准》——1.3 主流C语言编译器介绍
  6. java不等于正整数怎么输入_关于java:测试输入是否为正整数
  7. 软件工程实践2017第一次作业
  8. Java进阶之网络编程
  9. 生物技术制药课程文献调研报告撰写说明
  10. Redis支持的数据类型及其使用场景
  11. Netty如何做到单机百万并发?
  12. sqlserver2008使用设置sa用户登录步骤
  13. 为Windows 7的winsxs文件夹瘦身,慎重。
  14. windows安装深度linux,最漂亮的国产Linux,windows下安装深度操作系统步骤
  15. 使用Hutool生成多个excel文件合并成zip压缩包下载
  16. React 兼容IE8 项目
  17. 0基础入行学习软件测试有哪些要求?往往只有这3点
  18. doa的matlab算法,基于MATLAB的DOA估计算法的二维仿真建模
  19. tec控制pid程序_半导体制冷片tec元件PID温度控制求解
  20. 单词接龙 python_[蓝桥杯][算法训练VIP]单词接龙 (C++代码)

热门文章

  1. linux系统4gb够用吗,专家:手机仅需要4GB运存就够用
  2. hive--正则匹配
  3. JAVA感知机的动态分类实现
  4. IBM3650 5M 读取硬盘不成功
  5. SEH异常处理学习总结
  6. Android TTS
  7. atom插件下载教程
  8. 紫外线消毒水处理设备的杀菌速度快吗?
  9. 艾美捷 24孔细胞划痕试验试剂盒参数说明和相关研究
  10. java获取表单隐藏域的值,Servlet中使用表单隐藏域