我写了一个小小的声音课,我可以发出声音并切换它和东西,但我不是太大,我不得不至少暂时废弃它。我尝试了一个小方法来加载声音并播放它然后当它结束卸载它。但它会导致很多滞后。我以前上过的课程就像我能看到的那样做同样的事情,但它没有正确地丢弃声音,而且声音不再加载。继承我的方法,这导致了超级滞后,但正在努力应该做什么。我需要帮助改进它。
public static void runOnce(final String location) {
try {
File audioFile = new File(Game.gameFolder + "/sounds/" + location);
final AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);
AudioFormat format = audioStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
final Clip audioClip = (Clip) AudioSystem.getLine(info);
audioClip.open(audioStream);
audioClip.start();
new Thread(new Runnable() {
public void run() {
while (audioClip.isActive()) {}
try {
audioClip.close();
audioStream.close();
} catch (Exception e) {}
}
}).start();
} catch (Exception e) {}
}