(游戏)打飞机01:前言  传送门

(游戏)打飞机02:游戏背景滚动  传送门

(游戏)打飞机03:控制玩家飞机   传送门

(游戏)打飞机04:绘画敌机、添加子弹    传送门

(游戏)打飞机05:处理子弹,击中敌机,添加计分板   传送门

(游戏)打飞机06:后续  传送门

添加游戏声音

privateSoundPool pool=null;privateint sound_bomb=0;privateint sound_gameover=0;privateint sound_shot=0;
1.SoundPool最大只能申请1M的内存空间,这就意味着我们只能用一些很短的声音片段,而不是用它来播放歌曲或者做游戏背景音乐。2.SoundPool提供了pausestop方法,但这些方法建议最好不要轻易使用,因为有些时候它们可能会使你的程序莫名其妙的终止。Android开发网建议使用这两个方法的时候尽可能多做测试工作,还有些朋友反映它们不会立即中止播放声音,而是把缓冲区里的数据播放完才会停下来,也许会多播放一秒钟。3.SoundPool的效率问题。其实SoundPool的效率在这些播放类中算是很好的了,这可能会影响用户体验。也许这不能管SoundPool本身,因为到了性能比较好的Droid中这个延迟就可以让人接受了。

SoundPool注意事项

//加载声音 pool= new SoundPool(3, AudioManager.STREAM_SYSTEM,5); sound_bomb=pool.load(getContext(),R.raw.bomb,1); sound_gameover=pool.load(getContext(),R.raw.gameover,1); sound_shot=pool.load(getContext(),R.raw.shot,1);

  Android的SoundPool  传送门

  play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)   播放声音

其中leftVolume和rightVolume表示左右音量,

    priority表示优先级,

    loop表示循环次数,

  rate表示速率,如 //速率最低0.5最高为2,1代表正常速度

  sp.play(soundId, 1, 1, 0, 0, 1);

而停止则可以使用 pause(int streamID) 方法,这里的streamID和soundID均在构造SoundPool类的

  第一个参数中指明了总数量,而id从0开始

  添加子弹声音

         if(selectfeiji!=null){

if(zidan_num==5){

pool.play(sound_shot,1,1,1,0,1);

zidans.add(new Zidan(selectfeiji,zidan));

zidan_num=0;

}

zidan_num++;

}

  添加在子弹击中敌机的时候添加爆炸声音

    //受到攻击

public void shoudaogongji(ArrayList zidans){ if(!state){

for(GameImage zidan:(List)zidans.clone()){ if(zidan.getX()>x&&zidan.getY()>y

&&zidan.getX()

&&zidan.getY()

//子弹击中敌机了

zidans.remove(zidan);

state=true;

bitmaps=baozhas;

fenshu+=10;

pool.play(sound_bomb,1,1,1,0,1);

break;

}

}

}

}

  声音不放在线程中会可能会由于内存的问题导致声音播放时间延迟0.5S,听起来会有点别扭

线程中播放声音

  创建游戏声音播放线程

private class SoundPlay extends Thread{

int i=0;

public SoundPlay(int i){

this.i=1;

} public void run(){

pool.play(i,1,1,1,0,1);

} }

  添加子弹声音

      if(selectfeiji!=null){

if(zidan_num==5){

new SoundPlay(sound_shot).start();

// pool.play(sound_shot,1,1,1,0,1);

zidans.add(new Zidan(selectfeiji,zidan));

zidan_num=0;

}

zidan_num++;

}

  添加在子弹击中敌机的时候添加爆炸声音

    //判断敌机是否被击中

private boolean state=false;

//受到攻击

public void shoudaogongji(ArrayList zidans){ if(!state){

for(GameImage zidan:(List)zidans.clone()){ if(zidan.getX()>x&&zidan.getY()>y

&&zidan.getX()

&&zidan.getY()

//子弹击中敌机了

zidans.remove(zidan);

state=true;

bitmaps=baozhas;

fenshu+=10;

new SoundPlay(sound_bomb).start();

// pool.play(sound_bomb,1,1,1,0,1);

break;

}

}

}

}

App ICON

Android Studio中设置App Icon   百度经验:传送门

打开—文件—-new—-image asset

设置图标保存文件到drawable时后有时会在Asset Studio里面Path找不到图片路径,这时可以找到mipmap-hdpi文件路径,把照片放到那下面

D:\Android\Android Studio\plugins\android\lib\templates\gradle-projects\NewAndroidModule\root\res\mipmap-hdpi

发表回复

后才能评论