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