Запуск звука с javax.sound.sampled.Clip в фоновом режиме - PullRequest
0 голосов
/ 26 февраля 2020

Поэтому я пытаюсь создать игровое вступление с музыкой c, начиная с определенного момента, когда меняем картинку с помощью кода ниже. Звук воспроизводится, но приостанавливает вступление до завершения дорожки, а затем возобновляет вступление. Есть ли способ сохранить трек в фоновом режиме? Спасибо

public void launcherbackgroundsound(File lbgs)
{
    try
    {
        Clip mm_clip = AudioSystem.getClip();
        mm_clip.open(AudioSystem.getAudioInputStream(lbgs));
        mm_clip.start();
        Thread.sleep(mm_clip.getMicrosecondLength()/1000);
    }
    catch (Exception lbgs_err1)
    {
        System.out.println("Music track not found! No audio to play in game! ");
    }

}

1 Ответ

0 голосов
/ 26 февраля 2020

Потеряйте команду Thread.sleep.

Это все, что вам нужно сделать. Clip будет воспроизводиться в своей собственной теме автоматически. При воспроизведении клипы получают свои собственные статусные темы "daemon". Пока ваша программа работает, поток демона будет продолжать выполняться. Потоки демона используются с Clips и SourceDataLines, так что незавершенный звук не будет препятствовать завершению программы после завершения всех обычных потоков.

Кроме того, вы должны загружать Clip во время запуска, а не только перед его запуском. , Клипы предназначены для предварительной загрузки и сохранения в памяти для использования по мере необходимости. Таким образом, сохраните загруженный клип как переменную уровня класса / переменную экземпляра. Это обычная практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...