遊戲中的音效

2022-07-14 18:09:17 字數 2737 閱讀 3409

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。

package

import 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...