2013-11-09 4 views
2

Я использую libgdx для воспроизведения фоновой музыки для игры, которую я пишу. У меня есть массив потенциальной музыки для воспроизведения, и я хотел бы, чтобы, когда текущая песня заканчивается, другая выбирается случайным образом из массива.Обнаружение, когда музыка закончила играть

Проблема, с которой я столкнулась, заключается в том, что музыка закончилась.

В классе Music, похоже, нет обработчиков событий, к которым я мог бы подключиться, и у меня нет способа рассказать мне, сколько времени потребуется для определенной музыки.

Единственная мысль, которая приходит на ум, включает в себя опрос

music.isPlaying() 

На петле какой-то, чтобы быть в состоянии определить, когда его остановили. На мой взгляд, это уродливое решение - и не будет работать, если (скажем) пользователь отключился.

Есть ли что-нибудь еще, что я мог бы сделать?

+0

Внедрение MediaPlayer.OnCompletionListener в вашем классе. Метод OnCompletion будет вызываться, когда музыка завершает воспроизведение. В этом методе вы можете выбрать случайную музыку из массива и снова запустить плеер. Надеюсь, это помогло. –

+0

Чтобы уточнить, вы имеете в виду расширение libdgx для поддержки слушателя, о котором вы упомянули, или в мой личный класс для обработки музыки? – Haedrian

+0

В вашем личном классе ... См. Этот http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/audio/Music.html –

ответ

2

В последних версиях LibGDX вы можете определить OnCompletetionListener для вашего Music. См. the documentation. Он будет вызываться, когда текущее воспроизведение вашей музыки достигнет конца.

При использовании Sound существует известная проблема с этой функцией. Со звуком действительно невозможно узнать, когда это закончится, благодаря Android API, который необходимо поддерживать. Я бы предложил расширение gdx-audio в этом случае, но оно намного более низкоуровневое и недоступно для GWT/iOS. См. the wiki.

+0

Я до сих пор получаю миллисекунды задержки. Сделка между музыкальными циклами звучит не очень хорошо. –

Смежные вопросы