我用libgdx + java開發了一款不錯的遊戲,用於android作爲目標平臺。 我幾乎到了最後,只有改進地圖纔是剩下的任務。 直到現在我正在運行 - 在桌面上調試我的遊戲,因爲您知道libgdx是跨平臺的,我的期望只是右鍵單擊並導出爲android。 當然我試過了,那又怎麼樣?突然之間我撞上了牆。 問題是我的聲音效果在android上聽起來不太好。他們在桌面上工作得很好,但在Android上不太好。讓我分析一下幾個問題和例子: 如果我們考慮爆炸音效: 一個場景;車輛撞擊到爆炸聲,我從box2d接觸到聯繫人,並在爆炸聲效果上調用播放方法。 我期望的是一個正常的爆炸聲。 在桌面我聽到它,沒有問題,但在Android的我所聽到的只是一個非常非常短的嘈雜(非常短的也許只有幾毫秒),那麼一段時間後,沉默了許久再次短嘈雜 我怎麼嘗試:Libgdx聲音效果不流暢或完全只在Android上發佈(聲音效果)
我試過許多其他線程的建議,他們是:
- 我想它在格式44.1K赫茲16位wav文件相同的格式OGG文件,22.05千赫wav文件,他們所有的聲音一樣。
- 音效不會太短或太長。好吧,我的罰款是3秒。
- 我試圖用fl-studio和audacity重新保存或安排它。
我在s5 mini experia z1和z3上試了一下。當我用音樂類 ,但我有很多的聲音效果和音樂類不是爲使用,所以我需要解決這個問題
我嘗試了一些其他的聲音文件不同
MP3文件工作的偉大比我同樣條件下的爆音效果(我的意思是聲音格式的頻率或比特率等)。
我檢查了聲音是否完全加載是否沒有。是的,它是完全加載,但聽起來一樣,當然我玩了一段時間後,我的遊戲開始。有了這句話,我的意思是我至少等待下一幀播放聲音,因爲有些人說它不能在某個線程的第一幀播放。
如果我們希望看到一些代碼: 我如何加載文件:
這是當比賽纔剛剛起步,而用戶耐心地按照加載畫面:)
private void loadSoundEffects(){
assetMan.load("sounds/explosion.wav", Sound.class);
}
進度條叫
然後我得到的聲音進入另一種方法在全球分類地圖加載完成
soundEffects.put("explosion",assetMan.get("sounds/explosion.wav", Sound.class));
在我的聲音管理器類我小時後AVE這種方法
public void playSingle(String name,float x ,float y){
Sound sound=null;
sound=soundEffects.get(name);
long id=sound.play();
sound.setVolume(id, getVolume(x, y));//dont worry here volume returns always 1 for texting
}
當我打電話玩兒法就在這裏,它返回一個積極的ID(如出現問題情況下,它會返回-1)
對於裝載的東西,我也試過這樣:
sound=Gdx.audio.newSound(Gdx.files.internal("sounds/explosion.wav"));
這是一個很大的項目,所以我可能有超過70個班級=>我不能在這裏粘貼所有這些:) 但我覺得隨時可以回答任何形式的問題,請問如果你需要更多的代碼或文件或者其他東西,請致電 hing讓我知道
讓我們看看它的聲音;我上傳的正常爆炸的WAV文件,我從電話記錄在此RAR的一個:
http://www.filedropper.com/soundeffects
你會聽到一些聲音,像滴答真的聽起來像這樣:)
編輯:添加一些更多信息
它是工作在Windows 7上我的操作系統是贏得7
我使用最新libGDX。我的IDE是日食。我試圖通過拔掉電纜來擺脫調試器,但結果是一樣的。
聲音效果使用的文件大小必須小於1 MB爲維基說,我的文件,688 KB
編輯:與性能相關的?
我開始思考它是否與我的代碼的性能有關。考慮一些導致延遲的其他原因,並且對聲音產生這種效果,但是這裏有一些值可以使用55-60 fps的遊戲,甚至有時候所有的計算都少於15毫秒,但是我聽到的聲音相同,只有很少的文件像60 KB。所以,我會繼續考慮這些文件。如果他們壞了?或仍然是一個格式問題?你有一個工作的音效文件?或有關格式的任何建議?我讀了96khz 16位ogg文件,我也試過了。
編輯:重要通知
我在手機上玩過我的遊戲。我開車撞了一些爆炸物。它聽起來一樣,然後我回到菜單。我忘了打開手機。遊戲正在運行。但屏幕自動鎖定。它就這樣離開了大約15-20分鐘。然後再試一次,我解鎖了屏幕,發生了什麼?突然之間,所有的爆炸物都爆炸了,我聽到的聲音非常好,完整,菜單屏幕仍在顯示。因此我認爲當遊戲暫停足夠的時間時,我可以得出結論,聲音效果已準備就緒,並且可以很好地播放。這是什麼意思?聲音效果沒有從內存加載,但我想玩?或準備就緒在這裏有另一種含義?我檢查了它是否被加載或者資產管理器的isLoaded()方法返回true。我只是在聲音上調用播放方法之前做了這個。我應該相信這是加載的方法嗎?或者是什麼?
好吧,各位先感謝您的幫助。
對不起我一直是有點長,我會繼續努力和研究..
感謝您的快速回復,但我確信兄弟我檢查如果Windows不計算錯誤最大的一個是787 KB,我在ra中共享的一個也不到1 MB,它是688 KB。對不起,我一定已經將這個信息添加到我的問題 –