Воспроизведение музыки в стиле ПульПкор - циклический звук и анимированная громкость
Вопрос
Я экспериментировал с PulpCore, пытаясь создать моя собственная игра в защиту башни (пока не воспроизводится), и мне это очень нравится, я столкнулся с проблемой, в которой не могу до конца разобраться.Я расширил PulpCore с помощью JOrbis, чтобы разрешить воспроизведение файлов OGG.Работает нормально.Однако у PulpCore, похоже, есть проблема с зацикливанием звука при анимации уровня громкости.Я попробовал это и с wav-файлом, чтобы убедиться, что это не JOrbis нарушает его.Код выглядит следующим образом:
Sound bgMusic = Sound.load("music/music.ogg");
Playback musicPlayback;
...
musicVolume = new Fixed(0.75);
musicPlayback = bgMusic.loop(musicVolume);
//TODO figure out why it's NOT looping when volume is animated
// musicVolume.animate(0, musicVolume.get(), FADE_IN_TIME);
Этот код до тех пор, пока последняя строка не будет закомментирована, воспроизводит music.ogg снова и снова в бесконечном цикле (который я могу остановить, вызвав stop для объекта воспроизведения, возвращаемого из loop().Тем не менее, я хотел бы, чтобы музыка плавно затухала, поэтому, следуя совету документов PulpCore API, я добавил последнюю строку, которая создаст затухание, но музыка будет воспроизводиться только один раз, а затем остановится.Интересно, почему это так?Вот немного документации:
Воспроизведение пульпкор.звук.Звук. цикл (фиксированный уровень)
Зацикливает этот звуковой клип с заданным уровнем громкости (от 0.0 до 1.0).Уровень может иметь свойство анимация прилагается.
Параметры:Уровень
ВОЗВРАТ:объект воспроизведения для этого уникальное воспроизведение звука (один звук может иметь много объектов одновременного воспроизведения ) или null, если звук может не воспроизводиться.
Так в чем же может быть проблема?Повторяю, с последней строкой звук затухает, но не зацикливается, без нее он зацикливается, но начинается с указанного уровня громкости 0,75.Почему я не могу анимировать громкость зацикленного воспроизведения музыки?Что я делаю не так?У кого-нибудь есть какой-либо опыт работы с PulpCore и он сталкивался с этой проблемой?Кто-нибудь может, пожалуйста, скачать PulpCore и попробовать зациклить музыку, которая постепенно затухает?
примечание:Мне нужно сохранить ссылку на возвращаемый объект воспроизведения, чтобы я мог отключить музыку позже.
Решение 3
Наконец-то мне удалось получить объяснение и простое решение этой проблемы от автора pulp core.Итак, вот оно:
Это ошибка PulpCore.Когда на выходе громкость равна нулю, проигрыватель звука останавливается воспроизведение звука в цикле.
Чтобы обойти это, анимируйте из значения, которое не равно нулю, вот так:
musicVolume.animate(0.0001, 1, FADE_IN_TIME);
Другие советы
Если в animate
метод только устанавливает параметр, он может работать непредсказуемо - попробуйте переключить эту строку с помощью самого цикла, чтобы анимация применялась первой.
Можете ли вы анимировать громкость при воспроизведении без цикла, а затем, в конце этого воспроизведения, запустить цикл на фиксированном уровне?