cocos2dx音效引擎

在遊戲中,我們把聲音分爲兩類。第一類是音樂,這種類型的聲音通常長度較長,適合作爲環境音樂(例如遊戲的背景音樂)。由於它的長度較長,同一時刻通常只能播放一首音樂。第二類是音效,它的特點是長度很短,但是可以同時播放多個音效,擁有很強的表現力。
在遊戲開發中,我們可以十分方便地啓用CocosDenshion音效引擎庫。CocosDenshion位於Cocos2d-x目錄下的"CocosDenshion"目錄中。通常,Cocos2d-x項目已經包含了CocosDenshion庫,當我們需要使用音效引擎時,把引擎頭文件引進來即可。
CocosDenshion實現了簡單易用的SimpleAudioEngine類。爲了使用音效引擎,我們只要引入它的頭文件即可:

  1. #include "SimpleAudioEngine.h"  




CocosDenshion移植自Cocos2d-iPhone中的同名庫。實際上,Cocos2d-iPhone中的CocosDenshion實現了3個音效引擎,由底層到高級分別是CDSoundEngine、CDAudioManager和SimpleAudioEngine,其中前兩個較爲底層的引擎用於高級音頻的開發,例如實現3D混音等。然而,對於普通開發者而言,SimpleAudioEngine已經足以滿足大部分遊戲開發的需求了。底層的音效引擎封裝自OpenAL音頻接口,從而實現了十分靈活、高效的音頻回放引擎。然而,OpenAL只能被OS X(包括iOS)平臺支持,其他平臺下是沒有類似接口的,因此Cocos2d-x不得不捨棄CDSoundEngine和CDAudioManager這兩個底層引擎,只保留了最常用的SimpleAudioEngine。


CocosDenshion引擎庫實際上是對系統音頻API的封裝,因此它支持的音頻文件格式與平臺有關。


平臺音樂格式:
1, Android:  mp3、mid、ogg和wav,可以播放android.media. MediaPlayer所支持的所有格式
2,? iOS:aac、caf、mp3、m4a和wav, 可以播放AVAudioPlayer, 所支持的所有格式
3, Windows: mid、mp3和wav


平臺音效格,式:
1,Android:ogg和wav, 對wav的支持並不完美
2, iOS:caf和wav,可以播放Cocos2d-iPhone,CocosDenshion所支持的所有格式
3, Windows:mid和wav


SimpleAudioEngine與許多Cocos2d的部件一樣,是一個單例類。我們使用以下代碼來訪問它的實例:
SimpleAudioEngine::sharedEngine();


加載音樂和音效通常是一個耗時的過程,爲了防止由即時加載產生的延遲導致實際播放與遊戲不協調的現象發生,在播放音效和背景音樂之前,需要預加載音樂文件。通常,我們會在進入遊戲場景前的載入階段調用下面的這兩個方法。


  1. 1,,void preloadEffect(const char* pszFilePath):用於預加載音效文件,其中pszFilePath爲音效文件所在的目錄位置。  
  2. 2,void preloadBackgroundMusic(const char* pszFilePath):用於預加載背景音樂,其中pszFilePath爲音樂文件所在的目錄位置。  





  1. void rewindBackgroundMusic():重新播放背景音樂。  
  2. bool isBackgroundMusicPlaying():返回一個布爾類型的值,表示是否正在播放背景音樂。  
  3.  void unloadEffect(const char*pszFilePath):卸載已預載入的音效文件,以釋放系統資源。pszFilePath參數代表預載入音效文件的路徑。當不再使用某個音效文件時,我們可以通過調用此函數釋放資源。然而,如果再次使用此音效,引擎會再次載入該音效文件,導致消耗大量的時間。  
  4.  float EffectsVolume屬性:獲取或設置音效的音量大小,其取值爲0.0到1.0之間的浮點數。注意,對此屬性的設置會影響到所有音效的音量大小。  
  5.  float BackgroundMusicVolume屬性:獲取或設置背景音樂的音量大小,其取值爲0.0到1.0之間的浮點數。與EffectsVolume屬性類似,對此屬性的設置也會影響到所有背景音樂的音量大小。  
  6. void end():當不再使用音頻引擎時,調用此方法來釋放SimpleAudioEngine所佔用的資源。  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章