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;
}
php

applicationDidFinishLaunching()函數是遊戲啓動時候回調。在遊戲啓動時候,通常會有一個啓動界面,啓動界面通常會有一個延遲展現,這是段時間是初始化最佳時機。app

 

 

 

更多內容請關注Cocos2d-x系列圖書《Cocos2d-x實戰(卷Ⅰ):C++開發》函數

本書交流討論網站:http://www.cocoagame.net網站

歡迎加入cocos2d-x技術討論羣:25776038六、327403678spa

相關文章
相關標籤/搜索