Java:多次播放声音
Posted
技术标签:
【中文标题】Java:多次播放声音【英文标题】:Java: Play a sound more than once 【发布时间】:2013-11-24 22:22:04 【问题描述】:我最近一直在学习如何在 java 中添加声音。目前,我有这段代码可以工作,但它并不总是在正确的时间播放,或者有时甚至根本不播放。每次在正确的时间触发 play()
方法时,我如何才能播放声音?顺便说一句,每次我在 component
上 click
时都会发生这种情况。
public class Sound
private File sndFile0;
private AudioInputStream au;
private Clip cl;
private DataLine.Info info;
public Sound()
try
sndFile0 = new File(getClass().getResource("/sound/vir1.wav").toURI());
au = Audiosystem.getAudioInputStream(sndFile0);
info = new DataLine.Info(Clip.class, au.getFormat());
cl = (Clip) AudioSystem.getLine(info);
cl.open(au);
catch (UnsupportedAudioFileException | IOException | LineUnavailableException | URISyntaxException e)
e.printStackTrace();
public void play()
cl.start();
cl.setFramePosition(0);
【问题讨论】:
只需在 Type.STOP 上重新启动。 ***.com/questions/557903/… @MichaelD。很奇怪,如果我足够快地点击组件或在剪辑结束后,声音会重新开始,否则如果它在中间的某个地方,它不会做任何事情。我将播放代码更改为:pastebin.com/KNAmd9Mc 如果它已经在播放你要重新启动它吗?那是一个 stop() reset() 和一个 play() 左右......不确定 经过一些测试,我发现LineListener
没有做任何事情,唯一允许声音播放不止一次的是cl.setFramePosition(0)
,它有时会起作用。我什至尝试在播放方法开始时使用cl.stop
,它根本没有帮助。所以基本上它让我回到了我原来的play()
方法。
已解决(ish)。我能够做到的是每次他们点击组件时,它都会重新加载文件。
【参考方案1】:
解决了。我所做的是每次单击组件时都继续加载声音文件。
【讨论】:
这是重复播放声音的唯一方法吗? 这可能是一种不太合适的方法。我不建议这样做。第三方库可能更合适。 好的。这种方法对我有用,直到我有很多连续的声音(自动开枪),然后我遇到内存不足的崩溃。以上是关于Java:多次播放声音的主要内容,如果未能解决你的问题,请参考以下文章