在游戏中,我们把音乐文件分为两类。一是背景音乐,二是音效。比如说,进入一个场景之中,会有背景音乐的声音,主角是做出动作时,会有音效的产生等等呐。。
然而背景音乐和音效音乐是不大相同的,一般来说,背景音乐是很长的,然而音效却是很短暂的,只有短短的几秒而已。所以说,背景音乐只能播放一首,然而,音效却可以同时播放多个,相信大家在玩游戏时也有所体会。
在cocos2d-x3.x中,我们可以十分方便的调用CocosDenshion音效引擎库。我们需要加载音频文件时,只需要把相关的头文件写进来就可以了。
#include "SimpleAudioEngine.h"
Android:mp3、mid、ogg和wav了。这些格式的区别可以去度娘查看。
IOS:aac、caf、MP3、m4a和wav。
Windows:mid、MP3和wav。
SimpleAudioEngine和许多Cocos2d的部件一样,是一个单例类。我们可以使用下面的代码来访它的实例:
SimpleAudioEngine::shareEngine();
void preloadEffect(const char* pszFilePath):用于预加载音效文件,其中pszFilePath为音效文件所在的目录位置。 void preloadBackgroundMusic(const char* pszFilePath):用于预加载背景音乐,其中pszFilePath为音乐文件所在的目录位置。
播放与停止:
音频引擎提供了非常方便的播放与暂停音乐音效的接口,使用起来非常方便的。API如下:
unsigned int playEffect(const char* pszFilePath, bool bLoop = false)
。如下:
SimpleAudioEngine::sharedEngine()->playEffect("coin.wav", false);
另外,playEffect函数会返回一个无符号整形数,是此次音效播放的唯一标示。可用来暂停该音效。
void playBackgroundMusic(const char* pszFilePath, bool bLoop = false);
void stopEffect(unsigned int nSoundId);停止播放指定的音效,里面的参数,就是返回的那个音效标示。
void stopAllEffects();停止播放所有音效。 void stopBackgroundMusic();停止播放背景音乐。
暂停和恢复:
当游戏进入后台时,通常暂停音乐;当游戏返回到前台时,再继续播放音乐。
void pauseBackgroundMusic();暂停播放背景音乐。暂停之后可以利用恢复播放音乐的方法来继续播放。
void pauseEffect(unsigned int nSoundId);暂停播放指定的音效,里面的参数就是将要被暂停的音效的唯一标示。
void pauseAllEffects();暂停所有播放中的音效。
<span style="font-family: Arial, Helvetica, sans-serif;">void resumeBackgroundMusic();</span>
void resumeEffect(unsigned int nSoundId);来恢复某一个被暂停的音效,里面的参数为该音效的唯一标示。
void rewindBackgroundMusic();重新播放背景音乐。
bool isBackgroundMusicPlaying():返回一个布尔类型的值,表示是否正在播放背景音乐。
void unloadEffect(const char*pszFilePath):卸载已预载入的音效文件,以释放系统资源。
float EffectsVolume属性:获取或设置音效的音量大小,其取值为0.0到1.0之间的浮点数。注意,对此属性的设置会影响到所有音效的音量大小。 float BackgroundMusicVolume属性:获取或设置背景音乐的音量大小,其取值为0.0到1.0之间的浮点数。与EffectsVolume属性类似,对此属性的设置也会影响到所有背景音乐的音量大小。 void end():当不再使用音频引擎时,调用此方法来释放SimpleAudioEngine所占用的资源。
原文地址:http://blog.csdn.net/u013517637/article/details/45584557