我一直在學習如何播放聲音,而且我有一個很好的方法,但有一個問題。我嘗試播放聲音,但在方法運行後不會立即播放。使用剪輯即時播放聲音
這裏是我的代碼:
new Thread(new Runnable(){
public void run(){
File audioFile = new File(soundMap.get(key));
try {
AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);
AudioFormat format = audioStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
Clip audioClip = (Clip) AudioSystem.getLine(info);
AudioListener listener = new AudioListener();
audioClip.addLineListener(listener);
audioClip.open(audioStream);
audioClip.start();
listener.waitUntilDone();
audioClip.close();
} catch (UnsupportedAudioFileException ex) {
System.out.println("The specified audio file is not supported.");
ex.printStackTrace();
} catch (LineUnavailableException ex) {
System.out.println("Audio line for playing back is unavailable.");
ex.printStackTrace();
} catch (IOException ex) {
System.out.println("Error playing the audio file.");
ex.printStackTrace();
}
}
}).start();
所有AudioListener類是,是什麼,讓線程等待,直到聲音完成。
另一方面,我會用這個遊戲,所以多次播放特定的聲音肯定會發生,所以如果有辦法解決這個問題,那也會有很大的幫助。
它需要1-3秒鐘的加載文件等等 - 這樣你就可以下載所有這些 - 如果這是你的要求 – gpasch
但是如果我播放聲音多次,它可以追溯到代替開始 – SevenDeLeven
*「它回到起點,而不是」*爲什麼這是一個問題?還要注意''Clip'方法,例如['Clip.setMicrosecondPosition(long)'](http://docs.oracle.com/javase/8/docs/api/javax/sound/sampled/Clip.html#setMicrosecondPosition-long - ).. –