你的位置:首页 > 软件开发 > Java > 游戏中的音效

游戏中的音效

发布时间:2015-11-27 23:00:05
1. 游戏中的即时音效:在游戏中,根据情况播放的即时音效较为短暂、可以重复、也可以同时播放。由于Android中提供的MediaPlayer会占用大量的系统资源,而且播放时还会进行缓冲,有较大的延时,因此使用MediaPlayer无法实现即时音效的播放。而在Android中专门提 ...

1. 游戏中的即时音效:

在游戏中,根据情况播放的即时音效较为短暂、可以重复、也可以同时播放。由于Android中提供的MediaPlayer会占用大量的系统资源,而且播放时还会进行缓冲,有较大的延时,因此使用MediaPlayer无法实现即时音效的播放。而在Android中专门提供的SoundPool类主要用于管理和播放应用程序中的声音资源,使用该类时首先需要通过该类将声音资源加载到内存中,然后在需要的即时音效的地方播放即可,几乎没有延时现象。【由于SoundPool设计的初衷是用于无延时地播放游戏中的即时音效,因此实际开发中应该只讲长度小于7s的声音资源放进soundPool,否则可能会加载失败或内存占用过大】

SoundPool类:

public SoundPool (int maxSreams, int streamType, int srcQuality):创建SoundPool对象:maxStreams[该参数用于设置最多同时播放多少个音效]streamType[该参数设置音频类型,在游戏中通常设置为STREAM_MUSIC]srcQuality[该参数设置音频文件的质量,目前还没有具体的作用,设置为0(默认值)]

public int load(Context context, int resId, int priority):架子啊音频文件:context[该参数为应用程序的上下文]resId[该参数为要加载的音效资源的ID]priority[优先级]

public final int play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate):播放音效:soundID[该参数为要播放的音效ID]leftVolume[用来控制左声道音量]rightVolume[用来控制右声道音量]priority[该参数为优先级,0为最低]loop[该参数为音效的循环次数,0为不循环,-1为永远循环]rate[该参数为音效的回放速率,该值在0.5~2.0f,1.0f为正常速度]

public final void pause(int streamID):暂停音效的播放:streamID[要暂停音效的ID]

public final void stop(int streamID):停止播放音效:streamID[要停止播放音效的ID]

实例:

//初始化声音池的方法    public void initialsnd()    {        //初始化SoundPool对象		sp=new SoundPool(4,AudioManager.STREAM_MUSIC,0);        //初始化hashMap		hm=new HashMap<Integer,Integer>();        //加载音效文件ff,并设置为1号声音放入到hm中		hm.put(1,sp.load(this,R.raw.ff,1));	}//音效播放	public void playSound(int sound,int loop)   {        //获取AudioManager引用		AudioManager am=(AudioManager)this.getSystemService(Context.AUDIO_SERVICE);        //获取当前系统音量		float v1=am.getStreamVolume(AudioManager.STREAM_MUSIC);        //获取系统的最大音量		float v2=am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);        //计算得到播放音量		float v=v1/v2;        //调用SoundPool的play方法播放文件		currentId=sp.play(hm.get(sound),v,v,1,loop,1.0f);	}

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:游戏中的音效

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录