Мне нужно сделать аудиоплеер, который воспроизводит звуковой клип всякий раз, когда выполняется эта подпрограмма. Он также должен остановить предыдущий звуковой клип, прежде чем воспроизводить новый.Клип AudioSystem не прекращает воспроизведение, когда clip.stop(); запускается
Проблема, с которой я сталкиваюсь, заключается в том, что клип никогда не регистрируется как работающий. Ни один из двух операторов if, которые проверяют, будет ли он работать, когда-либо используются. Это означает, что клип останавливается только тогда, когда он закончен, и они могут перекрываться и разрушать программу.
Я бы использовал clip.stop(); в других подпрограммах, но он скажет мне, что символ «клип» не может быть найден. Я не знаю, как сделать его доступным для других подпрограмм.
Единственный способ получить clip.stop(); работать в этой подпрограмме - поместить ее прямо после клипа.start(); линия, которая останавливает клип сразу после запуска, поэтому его вообще не слышно.
Ниже приведена подпрограмма, которую я использую для воспроизведения аудиоклипов.
public void play(String filename){
try {
Clip clip = AudioSystem.getClip();
audFile = audDir + filename;
if (clip.isRunning()){
System.out.println("Sounds playing 1");
clip.stop();
}
clip.open(AudioSystem.getAudioInputStream(new File(audFile)));
clip.start();
if (clip.isRunning()){
System.out.println("Sounds playing 2");
clip.stop();
}
} catch (Exception exc) {
exc.printStackTrace(System.out);
}
}
Посмотрите здесь, может быть, это поможет или дать вам отслеживать решение: http://stackoverflow.com/questions/5833553/how-to-stop-a-music-clip-in-java –
'Я бы использовал clip.stop(); в других подпрограммах, но он скажет мне, что символ «clip» не может быть найден ». Означает ли это, что ваш код дает вам ошибки? Если да, то где именно? –