閱讀986 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Cocos2d-x中使用音頻CocosDenshion引擎介紹與音頻文件的預處理

Cocos2d-x提供了一個音頻CocosDenshion引擎CocosDenshion引擎可以獨立於Cocos2d-x單獨使用CocosDenshion引擎本質上封裝了OpenAL音頻處理庫。
具體使用的API是SimpleAudioEngine。SimpleAudioEngine有幾個常用的函數
void preloadBackgroundMusic (const char *pszFilePath) 預處理背景音樂文件將壓縮格式的文件進行解壓處理如MP3解壓為WAV。
void playBackgroundMusic (const char *pszFilePath) 播放背景音樂。
void stopBackgroundMusic () 停止播放背景音樂。
void pauseBackgroundMusic () 暫停播放背景音樂。
void resumeBackgroundMusic () 繼續播放背景音樂。
bool isBackgroundMusicPlaying () 判斷背景音樂是否在播放。
unsigned int playEffect (const char *pszFilePath)  播放音效。
void pauseEffect (unsigned int nSoundId)  暫停播放音效參數nSoundId 是playEffect函數返回ID。
void pauseAllEffects () 暫停所有播放音效。
void resumeEffect (unsigned int nSoundId)  繼續播放音效參數nSoundId 是playEffect函數返回ID。
void resumeAllEffects ()  繼續播放所有音效。
void stopEffect (unsigned int nSoundId) 停止播放音效參數nSoundId 是playEffect函數返回ID。
void stopAllEffects ()  停止所有播放音效。
void preloadEffect (const char *pszFilePath) 預處理音效音頻文件將壓縮格式的文件進行解壓處理如MP3解壓為WAV。


無論是播放背景音樂還是音效在播放之前進行預處理是有必要的這個過程是對於音頻文件進行解壓等處理預處理隻需要在整個遊戲運行過程中處理依次就可以了。如果不進預處理則會發現在第一次播放這個音頻文件時候感覺很“卡”用戶體驗不好。
預處理相關函數有兩個preloadBackgroundMusic和preloadEffect。下麵代碼是預處理背景音樂和音頻
//初始化 背景音樂
SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Jazz.mp3");
//初始化 音效
SimpleAudioEngine::getInstance()->preloadEffect("sound/Blip.wav");
這些預處理過程代碼放置到什麼地方比較適合呢由於放置到任何一個場景層中當進入到這個層時候都比較“卡”所以最好不要放置到場景層中最好放置到AppDelegate文件中applicationDidFinishLaunching()函數中代碼如下。
bool AppDelegate::applicationDidFinishLaunching() {
    … …
    // run
    director->runWithScene(scene);

//初始化 背景音樂
SimpleAudioEngine::getInstance()->preloadBackgroundMusic("sound/Jazz.mp3");
//初始化 音效
SimpleAudioEngine::getInstance()->preloadEffect("sound/Blip.wav");


    return true;
}

applicationDidFinishLaunching()函數是遊戲啟動時候回調。在遊戲啟動時候一般會有一個啟動界麵啟動界麵一般會有一個延遲展示這是段時間是初始化最佳時機。



更多內容請關注最新Cocos圖書《Cocos2d-x實戰 C++卷》
本書交流討論網站https://www.cocoagame.net
更多精彩視頻課程請關注智捷課堂Cocos課程https://v.51work6.com
歡迎加入Cocos2d-x技術討論群257760386


《Cocos2d-x實戰 C++卷》現已上線各大商店均已開售

京東https://item.jd.com/11584534.html

亞馬遜https://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

當當https://product.dangdang.com/23606265.html

互動出版網https://product.china-pub.com/3770734

《Cocos2d-x實戰 C++卷》源碼及樣章下載地址

源碼下載地址https://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1 

樣章下載地址https://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

歡迎關注智捷iOS課堂微信公共平台

最後更新:2017-04-03 05:39:40

  上一篇:go Linux內核剖析 之 進程地址空間(二)
  下一篇:go POJ-3262-Protecting the Flowers