Java воспроизводит тот же звук поверх другого - PullRequest
0 голосов
/ 24 июня 2019

Я делаю игру, в меню которой наведите курсор мыши.Однако во 2-й раз, когда звучит звук, а первый еще не закончен, 2-й обрезает первый.Есть ли способ исправить эту проблему?

public static AudioClip menuMouseOver; //creating the audioClip
menuMouseOver = Applet.newAudioClip(new File(soundsLocation+"\\menuMouseOver.wav").toURL()); //loading the sound into the audioClip
menuMouseOver.play(); //calling the audioClip to play.

1 Ответ

0 голосов
/ 25 июня 2019

AudioClip, Clip, SourceDataLine не настроены для одновременного воспроизведения.Можно создать несколько аудиоклипов или клипов из общего файла .wav, и аудиосистема Java будет смешивать их вместе.В этом случае, однако, вам нужно хранить несколько копий аудио в памяти, и звук довольно громоздкий.

Но кодирование одновременного воспроизведения одного аудиофайла не особенно сложно.Относительно простой план - загрузить одну копию файла в память, а затем создать и управлять несколькими «курсорами», которые индексируют в этой области памяти для воспроизведения.Аудиоданные от каждого «курсора» могут быть добавлены вместе и выведены через SourceDataLine.

. Этот план я использовал для AudioCue , который должен быть своего рода суперClip, позволяющий в реальном времени изменять громкость, панорамирование и высоту тона, а также одновременное воспроизведение.Я считаю, TinySound - это еще одна аудиотека, которая обеспечивает одновременное воспроизведение.

...