Libgdx完成后发出声音

时间:2016-06-16 15:56:18

标签: libgdx

此当前代码在直立状态下反复运行低音,直到它开始扭曲声音并且运行不良。如何在完成运行后处理声音并停止运行多次,因为我希望声音只有在它进入直立状态时播放一次。谢谢亚历克斯。

public void determineState(){
        accelX = Gdx.input.getAccelerometerX();
        accelY = Gdx.input.getAccelerometerY();
        accelZ = Gdx.input.getAccelerometerZ();

        state = "NULL";

        if(accelX < 1 && accelX > -1){
            if(accelY > -1 && accelY < 1){
                if(accelZ > 9 && accelZ < 11){
                    state = "UPRIGHT";
                }
            }
        }

    }
 public void playSound(String soundString){
        System.out.println(soundString);
        if(soundString != "null"){
            sound = Gdx.audio.newSound(Gdx.files.internal(soundString + ".wav"));
            long id = sound.play();
            sound.setVolume(id, 3);
        }else if (soundString == "null"){
        }
    }

1 个答案:

答案 0 :(得分:1)

您不应该创建新声音并在每次想要播放时将其处理掉。这是浪费时间重复加载它。将加载的声音存储在数组中,或使用AssetManager加载它们并从那里获取引用。

您的playSound方法看起来像这样:

public void playSound (String soundFileName){
    sound = assetManager.get(soundFileName, Sound.class);
    sound.play();
}

顺便说一下,将音量设置为3是没有意义的,因为它的音量为0-1。

如果你想在状态改变时只发生一次事情,那么在状态改变时调用该方法,而不是像你正在做的那样在每一帧上调用。

即。这样做:

//...
if(accelZ > 9 && accelZ < 11){
    state = "UPRIGHT";
    playSound("uprightStateChange.wav");
}