解决了
Runnable有问题,所以实际上有两个游戏线程同时运行。(等于问题!)所以第二个命中音频播放器的线程出错了,这就是为什么它听起来很回声——它是从两个不同的线程播放的!
我还按照建议使用 SourceDataLine 来启用更长的声音剪辑。
原帖——
当此代码触发时,会弹出一个错误说
IllegalStateException: Mixer is already open
clip.open()
在线。我已经采取了所有措施来检查代码是否运行了两次,不是。但是,即使出现错误,声音仍然会播放。在较长的剪辑(30 秒)上,听起来好像有 2 种声音在播放,一个接一个。在非常长的剪辑(3 分钟)上,声音会断断续续。
(stringFile
是一个String
,如"example.wav"
)
File soundFile = new File(stringFile);
AudioInputStream inputStream = AudioSystem.getAudioInputStream(soundFile);
AudioFormat format = inputStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
clip = (Clip) AudioSystem.getLine(info);
clip.open(inputStream);
clip.start();
playing = true;
如果这个问题已经发布,我很抱歉。我已经搜索过,我发现没有类似的线程。