簡體   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