SimpleAudioEngine是cocos2d-x中的声音引擎,它控制着在游戏中的声音。

而且它是一个全局静态类,至始至终只会有一个且全局能访问。

话不多说我们来介绍一下吧

要使用SimpleAudioEngine引擎当然得手动添加头文件啦

#include "simpleAudioEngine.h"
using namespace CocosDenshion;

因为它是一个单例模式设计的所以使用getinstance。

CocosDenshion::SimpleAudioEngine::getInstance()->preloadBackgroundMusic("music/bgm.mp3");//预加载音乐

BackGroundMusic是bgm也就是背景音乐的意思,preload是预加载的意思。

预加载的好处是,先加载文件,在后面用到时速度比读取要快很多,在大型游戏开发中预加载的优势会比直接读取要快很多。

预加载之后就可以随心所欲的用啦!

CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("music/bgm.mp3");
//开始播放音乐

CocosDenshion::SimpleAudioEngine::getInstance()->pauseBackgroundMusic();
//暂停bgm音乐

CocosDenshion::SimpleAudioEngine::getInstance()->resumeBackgroundMusic();
//继续bgm音乐

当然暂停和继续是基于开始播放了bgm音乐的,所以无需文件路径。

还有一些别的方法

virtual void rewindBackgroundMusic() //重新播放背景音乐。

virtual bool willPlayBackgroundMusic()  //判断背景音乐是否可以播放。

virtual bool isBackgroundMusicPlaying() //判断背景音乐是否在播放。

virtual float getBackgroundMusicVolume() //获取背景音乐音量。

virtual void setBackgroundMusicVolume(float volume) //设置背景音乐音量,值域[0.0f,1.0f]。

在游戏当中我们按下某个按钮的时候也会有音效,攻击也会有音效,当然

SimpleAudioEngine也有控制音效的啦!

virtual float getEffectsVolume() //获取即时音效的音量。

virtual void setEffectsVolume(float volume) //设置即时音效的音量,值域[0.0f,1.0f]。 

virtual void preloadEffect(const char* pszFilePath)  //预加载音效,参数是文件路径。

virtual void unloadEffect(const char* pszFilePath) //卸载音效。

virtual unsigned int playEffect(const char* pszFilePath,bool bLoop=false,float pitch=1.0f,float pan=0.0f,float gain=1.0f) //播放即时音效,参数一是文件路径,参数二表示是否循环,参数三表示基因频率,参数四表示左右声道是否均衡,值域[-1,1],参数五表示音量衰减系数,值域[0.1]。

virtual void pauseEffect(unsigned int nSoundid) //暂停播放即时音效,参数为编号。

virtual void resumeEffect(unsigned int nSoundid) //继续播放即时音效,参数为编号。

virtual void stopEffect(unsigned int nSoundid) //停止播放即时音效,参数为编号。

virtual void pauseAllEffect() //暂停播放所有音效。

virtual void resumeAllEffect() //继续播放所有音效。

virtual void stopAllEffect() //停止播放所有音效