2015-01-04 68 views
5

我創建了音樂上創建這樣的:如何在libgdx中循環播放音樂?

music_background = Gdx.audio.newMusic(Gdx.files.internal("background_music.mp3")); 
music_background.setLooping(true); 

它不是在循環再生的問題。

我也試過沒有循環,而是註冊爲setOnCompletionListener但它也不玩。當我試圖像這樣重新加載文件時:
music_background = Gdx.audio.newMusic(Gdx.files.internal("background_music.mp3")); 在事件內部它工作但只有一次。

我覺得現在的問題是,它完成播放時,文件處理本身...

我怎樣才能在循環播放音樂?我做錯了什麼?

+1

方法名是'setLooping'而不是'SetLoop'。 您也可以在音樂結束後嘗試方法'isLooping()'和'getPosition()'以進行調試。 – Rara

+0

是的,我自己寫在這裏,並沒有從我的代碼複製它。 我試過isLooping()和getPosition()。 第一個方法是真實的,第二個方法是0 ..我可以用它做什麼? –

+0

我在我的應用程序中試過了'音樂'資產加載的方法。它的工作和循環確定。 我也試着用'OnCompletionListener'來獲得'isLooping()'和'getPosition()'值來與你的比較,但是當音樂重新開始時沒有調用方法。也許它只有在音樂停止時才被調用,這在我的情況中從來不會發生。 還有一些想法: 1.你可以試試其他一些mp3嗎?可能是您當前的一個已損壞? 2.您的'music_background'字段是否聲明爲'static'? – Rara

回答

6

你正在做的是正確的,但MP3不適合循環使用,而是使用OGG。 MP3會在開始時添加一個短暫的靜音,OGG或WAV沒有這個限制。

這裏是我的代碼完美的作品:

menuMusic = Gdx.audio.newMusic(Gdx.files.internal("data/sounds/music_menu.ogg"); 
menuMusic.setLooping(true); 
menuMusic.play(); 

如果你有MP3的所有文件只需下載Audacity的,你的MP3導入,編輯掉空白錄音和出口爲OGG。