古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述Android_(游戏)打飞机06:后续相关的知识,希望能为你提供帮助。
(游戏)打飞机01:前言传送门
【Android_(游戏)打飞机06(后续)】(游戏)打飞机02:游戏背景滚动传送门
(游戏)打飞机03:控制玩家飞机传送门
(游戏)打飞机04:绘画敌机、添加子弹
传送门
(游戏)打飞机05:处理子弹,击中敌机,添加计分板传送门
(游戏)打飞机06:后续传送门
添加游戏声音
private SoundPool pool=null; private int sound_bomb=0; private int sound_gameover=0; private int sound_shot=0;
![Android_(游戏)打飞机06(后续)](http://img.readke.com/220509/0J431K33-0.jpg)
文章图片
![Android_(游戏)打飞机06(后续)](http://img.readke.com/220509/0J4316355-1.jpg)
文章图片
1. SoundPool最大只能申请1M的内存空间,这就意味着我们只能用一些很短的声音片段,而不是用它来播放歌 曲或者做游戏背景音乐。2. SoundPool提供了pause和stop方法,但这些方法建议最好不要轻易使用,因为有些时候它们可能会使你的程序莫名其妙的终止。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< Zidan> zidans){if(!state){ for(GameImage zidan:(List< GameImage> )zidans.clone()){if(zidan.getX()> x& & zidan.getY()> y & & zidan.getX()< x+width & & zidan.getY()< y+height){ //子弹击中敌机了 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< Zidan> zidans){if(!state){ for(GameImage zidan:(List< GameImage> )zidans.clone()){if(zidan.getX()> x& & zidan.getY()> y & & zidan.getX()< x+width & & zidan.getY()< y+height){ //子弹击中敌机了 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
![Android_(游戏)打飞机06(后续)](http://img.readke.com/220509/0J4314J2-2.jpg)
文章图片
推荐阅读
- Vpay系统app制作开发
- Android_(游戏)打飞机05(处理子弹,击中敌机,添加计分板)
- 安卓H5软键盘遮挡输入框
- POJ2486 Apple Tree 树上背包
- Android_(游戏)打飞机04(绘画敌机添加子弹)
- 调用android的getColor()方法出现 java.lang.NoSuchMethodError: android.content.res.Resources.getColor
- QWidget编写的安卓app
- 线段树+dfs序(Apple Tree )(Assign the task )
- Struts 2动作介绍和用法详解