当前位置:操作系统 > 安卓/Android >>

android 3d游戏研究(一)(边学边写,多谢高手指正,鞠躬) :声音

很久以前就想学习3d的,但一直没有时间,最近能闲点,所以开始学习3d的;
今天先写声音:
游戏中的声音可以分为两种,背景音乐和动作音乐;
他们有什么区别:背景音乐,相对与动作音乐它的存在时间要长,所以按这样的方式我将其引用分为两种:一般音乐播放(背景音乐),池播放(动作音乐)

(1)池播放:
代码实现:

SoundPool sp;                            //得到一个声音池引用
    HashMap<Integer,Integer> spMap;            //得到一个map的引用

//初始化
 sp=new SoundPool(
                5,                 //maxStreams参数,该参数为设置同时能够播放多少音效
                AudioManager.STREAM_MUSIC,    //streamType参数,该参数设置音频类型,在游戏中通常设置为:STREAM_MUSIC
                0                //srcQuality参数,该参数设置音频文件的质量,目前还没有效果,设置为0为默认值。
        );
        spMap=new HashMap<Integer,Integer>();
        spMap.put(1, sp.load(this, R.raw.attack02, 1));
        spMap.put(2, sp.load(this, R.raw.attack14, 1));


//音乐播放
public void playSound(int sound,int number){    //播放声音,参数sound是播放音效的id,参数number是播放音效的次数
        AudioManager am=(AudioManager)this.getSystemService(this.AUDIO_SERVICE);//实例化AudioManager对象
        float audioMaxVolumn=am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);    //返回当前AudioManager对象的最大音量值
        float audioCurrentVolumn=am.getStreamVolume(AudioManager.STREAM_MUSIC);//返回当前AudioManager对象的音量值
        float volumnRatio=audioCurrentVolumn/audioMaxVolumn;
        sp.play(
                spMap.get(sound),                     //播放的音乐id
                volumnRatio,                         //左声道音量
                volumnRatio,                         //右声道音量
                1,                                     //优先级,0为最低
                number,                             //循环次数,0无不循环,-1无永远循环
                1                                    //回放速度 ,该值在0.5-2.0之间,1为正常速度
        );
    }


//事件的引用:
playSound(1,1);        //播放第一首音效,循环一遍
sp.pause(spMap.get(1)); // 暂停第一首音效
sp.stop(spMap.get(1));// 停止第一首音效

好了,以上为池播放的简单使用;

(2) 一般播放
MediaPlayer mp;                            //MediaPlayer引用
AudioManager am;                        //AudioManager引用

//初始化音频
mp=new MediaPlayer();

//在第一次播放前,必须
try{
    mp.setDataSource("/sdcard/dl.mid");        //加载音频,进入Initialized状态。
    }catch(Exception e){e.printStackTrace();}
 try{
    mp.prepare();                //进入prepared状态。
    }catch(Exception e){e.printStackTrace();}

//事件的引用: www.zzzyk.com
mp.start();    //播放音乐
mp.pause();    //暂停音乐
mp.stop();       //停止音乐

//mp.isPlaying();//判断是否为播放状态

//初始化音量
am=(AudioManager) this.getSystemService(this.AUDIO_SERVICE);
am.adjustVolume(AudioManager.ADJUST_RAISE, 0);        //增大音量
am.adjustVolume(AudioManager.ADJUST_LOWER, 0);        //减小音量


好的,以上为声音的简单调度;

 

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,