java剪辑循环不工作
我有一个简单的剪辑方法,播放小的wav声音。是的,我现在找到了clip.loop()方法,但无论如何,我无法理解为什么我的方法不起作用 代码如下:java剪辑循环不工作,java,loops,audio,javasound,clip,Java,Loops,Audio,Javasound,Clip,我有一个简单的剪辑方法,播放小的wav声音。是的,我现在找到了clip.loop()方法,但无论如何,我无法理解为什么我的方法不起作用 代码如下: public void playSound(final String sound, final boolean loop, final int repeatTime){ try { sounds.get(sound).open(); } catch(Exception e) { System.
public void playSound(final String sound, final boolean loop, final int repeatTime){
try {
sounds.get(sound).open();
}
catch(Exception e) {
System.out.println(e);
}
new Thread(new Runnable() {
public void run() {
int repeatCount = 1;
Clip actualClip = sounds.get(sound);
actualClip.setFramePosition(0);
actualClip.start();
while(true){
System.out.println("repeat c: " + repeatCount + ", frames left: " + (actualClip.getFrameLength() - actualClip.getFramePosition()));
if(actualClip.getFramePosition() >= actualClip.getFrameLength()){
actualClip.stop();
actualClip.setFramePosition(0);
actualClip.start();
repeatCount++;
}
if(!loop && repeatCount > repeatTime){
break;
}
}
actualClip.stop();
}
}).start();
}
它的字符串声音,因为我从hashmap中获取它。当我把它叫做
playSound(key, false, 10);
这个声音重复10次。但是当我再次调用它时(我用一个按钮),它只会播放4-8次,所以循环不正常。我做错了什么
谢谢大家!
应该是,而不是和如果(!loop | | repeatCount>repeatTime)
- 对循环使用
,而不是
while
- 问题可能是您反复尝试打开同一个剪辑。要做到这一点,您必须首先获得一个新的
,该音频输入流
剪辑将
打开
剪辑
不需要单独的线程
。如果(!loop | | repeatCount>repeatTime),我想应该是。顺便说一句,为什么不使用for
而不是while
?这将使你的代码更可读。谢谢你。。。这实际上是一个sscce o.o ok故障。。。真的应该是,谢谢你真的应该是。这是一个真正的循环-我在这里用了多少脉冲?当它完成时,我正在打开它。