有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java剪辑循环不工作

我有一个简单的剪辑方法,播放小的wav声音。是的,我找到了方法剪辑。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();
}

它的字符串声音,因为我从hashmap中获取它。当我把它叫做

playSound(key, false, 10);

这个声音重复10次。但是当我再次调用它时(我用一个按钮),它只会播放4-8次,所以循环不正常。我做错了什么

谢谢大家!


共 (1) 个答案

  1. # 1 楼答案

    • if(!loop || repeatCount > repeatTime)应该是,或者更确切地说是和
    • 使用for循环代替while
    • 问题可能是您反复尝试open同一个剪辑。要做到这一点,您必须首先获得一个新的AudioInputStream,由这个Clipopen