1. 遊戲中的即時音效:
soundpool類:
public int load(context context, int resid, int priority):架子啊音訊檔案:context[該引數為應用程式的上下文]resid[該引數為要載入的音效資源的id]priority[優先順序]
例項:
//初始化聲音池的方法public void initialsnd()
public void playsound(int sound,int loop)
<1>idle狀態:使用new方法建立乙個mediaplayer物件或者呼叫了其reset方法時,該mediaplayer物件處於idle狀態。在此狀態下呼叫getduration等方法,reset方法進入idle狀態的話會觸發onerrorlistener.onerror,同時mediaplayer物件進入error狀態,當然new方法不會。
<2>end狀態:通過release方法可以進入end狀態,只要mediaplayer物件不再被使用,就應當盡快將其通過release方法釋放掉,以釋放占用的軟、硬體資源,這其中有些資源是互斥的。如果mediaplayer進入到end狀態就不會再進行其他任何狀態。
<5>preparing狀態:主要是與prepareasync非同步準備方法配合,如果非同步準備完成,會觸發onpreparedlistener.onprepared,進而進入prepared狀態。
<10>error狀態:由於某種原因mediaplayer出現了錯誤,就會觸發onerrorlistener.onerror**方法,此時mediaplayer將會進入error狀態。及時捕捉並妥善處理這些錯誤可以釋放相關的軟、硬體資源,也可以改善使用者體驗。如果mediaplayer進入了error狀態,可以通過呼叫reset方法來恢復,使得mediaplayer重新返回idle狀態。
2.2mediaplayer類:
首首先需要呼叫activity物件的getsystemservice(context.audio_service)方法獲取audiomanager物件。然後呼叫mediaplayer類中的相關方法進行音量控制。
public void adjustvolume(int direction, int flags):呼叫該方法可以調節音量大小。引數direction為調節的方向,adjust_lower減小音量、adjust_raise增大音量、adjust_same保持音量不變;引數flags為標記,通常設定為0。
public int getstreammaxvolume(int streamtype):獲取系統最大音量。
public int getstreamvolume(int streamtype):獲取系統當前音量。
void android.media.audiomanager.setstreamvolume(int streamtype, int index, int flags):呼叫該方法可以設定音量的大小,引數streamtype為聲音的型別,index為要設定的音訊的索引值,引數flags為標記,通常設定為audiomanager.flag_play_sound。
packageimport android.os.*;
import android.view.*;
import android.widget.*;
import android.media.*;
import android.content.*;
import android.view.view.*;
public
class mainactivity extends
activity
catch
(exception e)
am=(audiomanager)this
.getsystemservice(context.audio_service);
maxvolume=am.getstreammaxvolume(audiomanager.stream_music);
stpvolume=maxvolume/6;
button bstart=(button)this
.findviewbyid(r.id.playbtn);
button bpause=(button)this
.findviewbyid(r.id.pausebtn);
button bstop=(button)this
.findviewbyid(r.id.stopbtn);
button bincrease=(button)this
.findviewbyid(r.id.increasevolumebtn);
button breduce= (button)this
.findviewbyid(r.id.reducevolumebtn);
bstart.setonclicklistener(
newonclicklistener()
});bpause.setonclicklistener(
newonclicklistener()
});bstop.setonclicklistener(
newonclicklistener()
});bincrease.setonclicklistener(
newonclicklistener()
});breduce.setonclicklistener(
newonclicklistener()
});}
}
Android遊戲音效實現
構造方法 soundpool int maxstreams,int streamtype,int srcquality 引數解析 streamtype 該引數定義音訊型別 遊戲中一般設定為audiomanager.stream music srcquality 該引數用來設定音訊質量 這個引數目前沒...
遊戲中的指令碼
現在遊戲裡流行的指令碼有python 和lua 例如魔獸世界就是用lua指令碼來驅動邏輯的。我們為什麼用指令碼,而不是純用c 呢?當然,這與團隊協作以及工作效率有關。c 編譯速度不佳,當乙個專案達到比較龐大的乙個規模時,編譯的時間往往會讓人憤怒了。於是,python出現了。一些重要的演算法實現,圖形...
Unity 遊戲音效模組的封裝
audiosoure中有很多的變數 如果場景中有很多的audiosoure將會非常消耗資源,我們可以仿照物件池的原理,把聲音進行類似的操作。首先建立3個指令碼 audiomanager,clipmanager,souremanager clipmanager 用來管理clip片段 audiomana...