У меня есть простой метод Clip, чтобы воспроизводить небольшие звуки wav. Да, я нашел метод clip.loop() прямо сейчас, но в любом случае я не могу понять, почему мой метод не работает.java Clip loop не работает
Heres код:
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();
}
его Струнный звук, becaus им получать его из HashMap. Когда я назову его
playSound(key, false, 10);
Звук повторяет себя 10 раз. Но когда я назову это снова, (я делаю это с помощью кнопки), его воспроизведение всего 4 - 8 раз, поэтому цикл не работает правильно. Что я делаю неправильно?
Спасибо!
1) Для лучшей помощи раньше, отправьте сообщение [SSCCE] (http://sscce.org/). 2) «Клип» не требует отдельного «потока». –
Я предполагаю, что это должно быть 'if (! Loop || repeatCount> repeatTime)'. Кстати, почему бы не использовать 'for' вместо' while'? Это сделает ваш код более читаемым. – Elist
Спасибо ... это актуально sscce o.O ok fail ... действительно, это должно быть и. – GFP