2016-08-30 26 views
0

我在使用libgdx進行音樂循環時遇到了問題。我知道一個simmilair話題在此之前,但它根本沒有幫助我。問題是,當你進入我的遊戲主菜單(link)時,雨聲會循環。不幸的是,每場比賽之間都有一段時間的沉默,我不知道爲什麼 - 你可以下載比賽,看看我的意思。我已經在使用.ogg格式,所以我在這裏找到的其他主題的解決方案並沒有真正的幫助。Libgdx:在配樂循環中滯後

如果我在Audacity的一個循環中播放這個聲音,它可以很好地工作。

這裏是我的代碼(我不認爲它會幫助,雖然):

rainSoundtrack = Gdx.audio.newMusic(Gdx.files.internal("soundtrack.ogg")); 
rainSoundtrack.setLooping(true); 

回答

1

問題是libGDX處理音樂的方式。我會在GitHub issue 1654上引用badlogic的帖子。

Android的情況有點複雜和難過。在Android上,我們使用系統工具來回放音頻,即MediaPlayer。這些Android軟件使用設備依賴驅動程序(音頻驅動程序,自定義編解碼器實現等)。這意味着我們受到硬件供應商如三星及其驅動程序實施的支配。

問題不僅僅侷限於libGDX,它是Android issue 18756

解決方案

你的配樂短,小的內存大小的長期所以使用libGDX聲音是在這種情況下,實際上是更好的,它是免費的這種差距的bug。

音樂 - >長和大文件,不加載到內存

聲音 - >短,小的文件,加載到內存中

使用Sound類和循環播放。例如:

long id; 
... 
public void create() { 
    music = Gdx.audio.newSound(Gdx.files.internal("soundtrack.ogg")); 
    id = music.loop(); //Sound may not be ready here! 
} 

public void render() { 
    if(id == -1) 
     id = music.loop(); 
}