Android 台灣中文網

標題: postInvalidate() 能只刷新畫面嗎? [打印本頁]

作者: mingminglam    時間: 2013-6-1 15:09
標題: postInvalidate() 能只刷新畫面嗎?
我動用了postInvalidate()去刷新畫面制做了動畫
可是我希望在程式中能播放數秒音效配合動畫
音效程式碼在這:
static SoundPool sp;
static HashMap<Integer, Integer> map;

在onDraw()裡:
sp = new SoundPool(1, AudioManager.STREAM_MUSIC, 100);
map = new HashMap<Integer, Integer>();
map.put(R.raw.explosion, sp.load(context, R.raw.explosion, 1));
playSound(R.raw.explosion);

public static void playSound(int resId)
{
  Integer soundId = map.get(resId);
  if(soundId != null)
  sp.play(R.raw.explosion, 1, 1, 1, 0, 1);
}

可是因為我每秒都會刷新(postInvalidate())
音效只播放1秒就會重新播放

有方法令音效獨立出來不受刷新影響嗎?
作者: sheng760504    時間: 2013-6-4 10:37
加個判斷吧...不然不要寫在ondrow裡
作者: mike110631    時間: 2013-6-6 23:19
你當然可以寫判斷式,讓他還沒播完就不要再呼叫一次

但是你最好的方法,改程式裡面的結構,讓你要播動畫時呼叫一次音樂
動畫結束,音樂結束

在想看看吧!!!






歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1