我有一個調用setPitch(id,1.0f)的Sound對象。出於某種原因,在大多數設備上,這似乎工作,聽起來很完美(我意識到1.0f是正常的)。但是在銀河注3上,它會產生一種難看的深沉聲音,然後在再次調用播放方法後,聲音對象不再發出任何聲音(每當玩家獲得點時,我都會播放聲音對象)。設置音調是必要的,因爲我爲我的遊戲的其他部分使用了相同的聲音對象。我將鏈接下面的代碼,但我覺得這可能是一個libgdx毛刺/硬件問題。謝謝!Libgdx聲音| setPitch導致Sound對象停止播放/製造噪音
if (contact.getFixtureA().getFilterData().categoryBits == Config.CATEGORYBIT_BONUS) {
final BonusFixtureUserData userData = (BonusFixtureUserData) contact.getFixtureA().getUserData();
if (userData.bonus.scorable) {
long id = AudioManager.getAudioManager().playSound(AudioManager.getAudioManager().bonusSound);
AudioManager.getAudioManager().bonusSound.setPitch(id, Config.pointSoundPitch * 2);
}
}
AudioManager類(下面)
public class AudioManager {
private static AudioManager audioManager;
public Sound jumpSound, deathSound, pointSound, bonusSound;
public static AudioManager getAudioManager() {
if (audioManager == null) {
audioManager = new AudioManager();
}
return audioManager;
}
private float sound_volume, music_volume;
private AudioManager() {
sound_volume = 1f;
}
public void setAudio() {
deathSound = (Sound) Game.assetManager.get("sound/death.mp3");
jumpSound = (Sound) Game.assetManager.get("sound/tap.mp3");
pointSound = (Sound) Game.assetManager.get("sound/point.mp3");
bonusSound = (Sound) Game.assetManager.get("sound/point.mp3");
}
public long playSound(Sound sound) { //Returns soundID (Sound can play multiple times, soundID refers to which instance is playing)
long id = sound.play();
sound.setLooping(id, false);
sound.setVolume(id, sound_volume);
return id;
}
public static void dispose() {
audioManager = null;
}
}
Config.pointPitchSound是1.0F和1.07f整個遊戲之間實際上等於。當它是1.0f時,它會發生故障。我沒有嘗試過其他的價值觀,但我想他們會這樣做。
不幸的是,轉換成ogg文件並沒有解決問題:\ – XPatStudios
當音高> = 2時會出現這種情況。奇怪的是,不是嗎? – XPatStudios
哦,這並不奇怪,看看我發送的Android文檔。 'float:播放速率(1.0 =正常播放,範圍爲0.5到2.0)'我想這就是原因。 – pr0gramist