遊戲音效就是我們在玩遊戲時出現的音樂,這個也是每個遊戲必備的一部分,但有是你做遊戲的背景音樂有間斷的感覺的話,我們可以用getCurrentPosition()這個方法來判斷一下聲音播放的位移。其實這個也是非常簡單的。只要我們在代碼當中設定好(初始化聲音)和(載入音效資源)就可以了,別的就和音樂播放器的代碼差不多,像開始,停止。不多說了,我們還是先來看看代碼當中是怎麼實現音效的吧:
1.音效的音量
int streamVolume;
//定義SoundPool 對象 private SoundPool soundPool; //定義HASH表 private HashMap soundPoolMap; /*Parameters: null * Returns: None. * Description: 初始化聲音系統 * Notes: none. ***************************************************************/
2.初始化soundPool
public void initSounds() { //初始化soundPool 對象,第一個參數是允許有多少個聲音流同時播放,第2個參數是聲音類型,第三個參數是聲音的品質 soundPool = new SoundPool(100, AudioManager.STREAM_MUSIC, 100); //初始化HASH表 soundPoolMap = new HashMap(); //獲得聲音裝置和裝置音量 AudioManager mgr = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE); streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC); } /*************************************************************** * Function: loadSfx(); * Parameters: null * Returns: None. * Description: 載入音效資源 * Notes: none. ***************************************************************/
3.載入
public void loadSfx(int raw, int ID) { //把資源中的音效載入到指定的ID(播放的時候就對應到這個ID播放就行了) soundPoolMap.put(ID, soundPool.load(context, raw, ID)); } /*************************************************************** * Function: play(); * Parameters: sound:要播放的音效的ID, loop:迴圈次數 * Returns: None. * Description: 播放聲音 * Notes: none. ***************************************************************/ public void play(int sound, int uLoop) { soundPool.play(soundPoolMap.get(sound), streamVolume, streamVolume, 1, uLoop, 1f); }