我在做遊戲擴展來播放一些聲音。這些聲音可能會在隨機時間觸發,這意味着相同的聲音可能會以很短的時間間隔被觸發兩次。在這種情況下,即使聲音已經播放,聲音也應該開始播放(如果有意義的話)。如何啓動已播放的聲音?
我正在使用剪輯播放聲音。這意味着我必須在播放剪輯之前「倒回」剪輯。看起來,因爲它是相同的片段,所以它在重新開始之前停止播放。我想要的是讓它繼續播放,並在前一首中播放相同的剪輯。看到這個例子:
import java.io.File;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class JavaApplication {
public static void main(String[] args) throws Exception {
File file = new File(JavaApplication.class.getResource("1.wav").getPath());
AudioInputStream inputStream = AudioSystem.getAudioInputStream(file);
Clip clip = AudioSystem.getClip();
clip.open(inputStream);
clip.setFramePosition(0);
clip.start(); // The sound is 300 ms long
Thread.sleep(150); // Let it play for 150 ms
clip.setFramePosition(0); // Attempt to start it from the beginning, without stopping it
clip.start();
Thread.sleep(1000);
}
}
謝謝,但沒有它不起作用。一組剪輯可以工作,但我似乎我不得不加載相同的文件兩次。我現在不是真的有多少相同聲音的「層」會相互「頂」,所以... – gromit190
可能嘗試多線程?,每個線程都可以有一個關聯的Clip對象來處理,這樣你就可以將你的剪輯功能編碼一次,並在你每次需要播放時執行一個線程? – Aaron
請參閱我的問題編輯 – gromit190