Я играю звук .wav в Java. У меня есть некоторый код, который выглядит следующим образом:Ошибка Java при воспроизведении wav
package tools;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;
public class ClipHandler implements LineListener {
private Clip clip;
public ClipHandler(Clip clip) {
this.clip = clip;
clip.addLineListener(this);
}
public void play() {
clip.start();
}
public void update(LineEvent e) {
if (e.getType() == LineEvent.Type.STOP) {
clip.close();
}
}
}
Метод, который вызывается:
public static void play(String path) {
try {
URL soundUrl = SoundTools.class.getResource(path);
AudioInputStream stream = AudioSystem.getAudioInputStream(soundUrl);
AudioFormat format = stream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(stream);
clip.start();
new ClipHandler(clip).play();
}
catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
Проблема происходит, когда я пытаюсь воспроизвести файл .wav. Он всегда работает в первый раз, но после нескольких раз вызова игры (путь) окно, в которое я играю, полностью замораживается; это не позволит мне что-либо сделать. Мне нужна помощь! Кстати, я называю код следующим образом: SoundTools.play(soundPath);
Сообщите нам подробнее о вашей игре, вашем окне, вашей графической библиотеке. Свинг? И если да, уважаете ли вы правила потоковой передачи Swing? –
@HovercraftFullOfEels Да, я использую Swing и немного awt. Что еще вы хотели бы знать? – Jerfov2
Рассмотрите возможность использования [runnable example] (https://stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это приведет к меньшему путанице и лучшим ответам. – MadProgrammer