Воспроизведение музыки в стиле ПульПкор - циклический звук и анимированная громкость

StackOverflow https://stackoverflow.com/questions/2525758

Вопрос

Я экспериментировал с 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); 

Ссылка на это в pulpcore Google groups

Другие советы

Если в animate метод только устанавливает параметр, он может работать непредсказуемо - попробуйте переключить эту строку с помощью самого цикла, чтобы анимация применялась первой.

Можете ли вы анимировать громкость при воспроизведении без цикла, а затем, в конце этого воспроизведения, запустить цикл на фиксированном уровне?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top