我在遊戲中使用剪輯。在剪輯播放罰款,但經過一番「槍」,發生以下問題Java Sound Clip在多次播放後無法播放
異常在線程「的PulseAudio事件循環線程」 java.lang.IllegalStateException:排水管處org.classpath.icedtea.pulseaudio.EventLoop失敗 。 native_iterate(本機方法) 在org.classpath.icedtea.pulseaudio.EventLoop.run(EventLoop.java:133) 在java.lang.Thread.run(Thread.java:724)
我的代碼:
public static Clip[] sounds;
...
sounds = new Clip[3];
sounds[0] = getClip("gun.wav");
sounds[1] = getClip("click.wav");
sounds[2] = getClip("over.wav");
...
private void playSound(Clip clp) {
final Clip clip = clp;
Runnable soundPlayer = new Runnable() {
@Override
public void run() {
try {
if(clip.isActive() || clip.isRunning()) clip.stop();
clip.setMicrosecondPosition(0);
clip.start();
} catch (Exception e) {
e.printStackTrace();
}
}
};
new Thread(soundPlayer).start();
}
public void shoot() { //runs when space is clicked
if(canShoot) playSound(sounds[0]);
}
java.lang.IllegalStateException通常是由於:我通過調用
flush()
stop()
之後固定它。 – Malwaregeek不知道你的'getClip()'方法是如何實現的,但你應該儘量不要重用這些剪輯。 –
@MoritzPetersen,但遊戲作爲小程序導出,我不想重新下載整個數據。 – pfoof