標籤:線上 hide 分享 玩家 this idt android開發 array 載入
(遊戲)打飛機01:前言 傳送門
(遊戲)打飛機02:遊戲背景滾動 傳送門
(遊戲)打飛機03:控制玩家飛機 傳送門
(遊戲)打飛機04:繪畫敵機、添加子彈 傳送門
(遊戲)打飛機05:處理子彈,擊中敵機,添加計分板 傳送門
(遊戲)打飛機06:後續 傳送門
添加遊戲聲音
private SoundPool pool=null; private int sound_bomb=0; private int sound_gameover=0; private int sound_shot=0;
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:後續