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() //停止播放所有音效
類方法參考了https://blog.csdn.net/GladiolusLai/article/details/52575222