我有以下代码可以在游戏中播放我的声音:
protected void playSound(final String sound, final int playTime){
try {
sounds.get(sound).open();
}
catch(Exception e) {
System.out.println(e);
}
new Thread(new Runnable() {
public void run() {
Clip actualClip = sounds.get(sound);
actualClip.setFramePosition(0);
if(playTime < 0){
actualClip.loop(Clip.LOOP_CONTINUOUSLY);
}
else{
actualClip.loop(playTime - 1);
}
}
}).start();
}
声音保存在哈希图中:
private HashMap<String, Clip> sounds;
当我“同时”播放两种不同的声音(相差 1 毫秒;))时,它们彼此平行播放;所以我可以同时听到两种声音。看起来像这样:
playSound("sound1", 1);
playSound("sound2", 1);
但是当我尝试两次播放相同的声音时,它不起作用:
playSound("sound1", 1);
//here its waiting in my programm
playSound("sound1", 1);
问题是,我想添加一个“死亡”声音——但两个暴徒也可以同时死亡,或者只是在另一秒之前死亡。当这种情况发生时,要么什么都没有发生,要么声音只播放一次。
为什么?我认为我在自己的线程中创建了同一文件的新 AudioClip?那么为什么它不起作用?