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

Я экспериментировал с PulpCore, пытаясь создать свою собственную игру защиты башни (пока не играемую), и мне это очень нравится, я столкнулся с проблемой, которую не могу понять. Я расширил PulpCore с помощью функции JOrbis, чтобы позволить воспроизводить файлы OGG. Работает отлично. Однако, у pulpCore, похоже, есть проблема с зацикливанием звука, пока анимация уровня громкости. Я тоже попробовал это с файлом wav, чтобы убедиться, что это не jRobis, который его сломает. Код выглядит так:

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 для объекта Playback, возвращаемого loop(). Однако мне бы хотелось, чтобы музыка плавно затухает, поэтому, следуя советам API-интерфейса PulpCore, я добавил последнюю строку, которая создаст эффект затухания, но музыка будет воспроизводиться только один раз, а затем остановится. Интересно, почему это? документация:

Воспроизведение pulpcore.sound.Sound.loop(фиксированный уровень)

Зацикливает этот аудиоклип с указанным уровнем громкости (от 0,0 до 1,0). К уровню может быть прикреплена анимация свойства.

Параметры: уровень

Возвраты: объект Воспроизведения для этого уникального воспроизведения звука (один Звук может иметь много объектов одновременного воспроизведения) или ноль, если звук не может быть воспроизведен.

Так в чем может быть проблема? Я повторяю, с последней строкой звук затухает, но не зацикливается, без него он зацикливается, но начинается с указанного уровня громкости 0,75. Почему я не могу оживить громкость воспроизведения зацикленной музыки? Что я делаю неправильно? Кто-нибудь имеет опыт работы с pulpCore и сталкивался с этой проблемой? Кто-нибудь может загрузить PulpCore и попробовать зациклить музыку, которая постепенно исчезает?

примечание: мне нужно сохранить возвращенную ссылку на объект Playback, чтобы потом можно было убить музыку.

3 ответа

Решение

В конце концов мне удалось получить объяснение и простое решение этой проблемы от автора ядра целлюлозы. Итак, вот оно:

Это ошибка PulpCore. Когда выходная громкость равна нулю, звуковой проигрыватель перестает воспроизводить звук.

Чтобы обойти это, анимируйте значение, отличное от нуля, например:

musicVolume.animate(0.0001, 1, FADE_IN_TIME); 

Ссылка на это в pulpcore Google групп

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

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

Другие вопросы по тегам