繁体   English   中英

Java剪辑循环不起作用

[英]java Clip loop not working

我有一个简单的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.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();
}

它的String声音,因为我将其从哈希图中删除了。 当我打电话给

playSound(key, false, 10);

声音会重复播放10次。 但是,当我再次调用它时(我用一个按钮进行操作),它只播放4到8次,因此循环无法正常工作。 我在做什么错?

谢谢!

  • if(!loop || repeatCount > repeatTime)应该是OR或AND。
  • 使用for循环而不是while
  • 问题可能是您尝试一遍又一遍地open同一剪辑。 为此,您必须首先获取一个新的AudioInputStream以供此Clip open

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM