使声音开启或关闭的声音按钮不会更改按钮图像

时间:2017-05-29 09:36:11

标签: libgdx

我的菜单屏幕上有一个声音按钮。它有两个图像。一个正常,另一个被检查(表示声音关闭)。

我正在使用布尔变量来获取此按钮的状态。如果是真的,声音将播放其他声音将关闭。我正在使用它来控制游戏中的声音。

public boolean soundBool=true;

像这样创建了soundButton:这里soundTexture1是普通图像(ON),soundTexture2有一个十字标记(OFF)。

private void drawSoundButton() {
    soundButton = new ImageButton(new TextureRegionDrawable(soundTexture1),
            new TextureRegionDrawable(soundTexture2), new TextureRegionDrawable(soundTexture2));
    stage.addActor(soundButton);

    soundButton.setPosition(UiConstants.SOUND_X, UiConstants.SOUND_Y, Align.bottom);

    soundButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeEvent event, Actor actor) {
            if (!game.buttonClickSoundBool)
                buttonClickSound.play();
            soundButton.scaleBy(0.025f);

            if(game.soundBool)
                game.soundBool=false;
            else
                game.soundBool=true;
        }
    });
}

仅当此soundBool为true时,我才会使用play()调用所有声音。 现在,当我点击此按钮时,将会出现十字标记,声音会关闭并且在声音方面工作正常。 每当我回到菜单时,应该显示带有十字标记的图像,因为声音是OFF。但是它没有显示十字标记图像。它显示第一个图像。但功能很好。如果我点击,声音将会亮起。 如果有人解释如何解决这个问题会很有帮助。

1 个答案:

答案 0 :(得分:1)

根据soundBool的状态在soundButton上使用setChecked(boolean status);

private void drawSoundButton() {
    soundButton = new ImageButton(new TextureRegionDrawable(soundTexture1),new TextureRegionDrawable(soundTexture2), new TextureRegionDrawable(soundTexture2));
    soundButton.setChecked(!soundBool); // setChecked according to boolean status

    stage.addActor(soundButton);
    soundButton.setPosition( UiConstants.SOUND_X,UiConstants.SOUND_Y,Align.bottom);

    ...
}

另外,请不要忘记保存soundBool的状态,以便在游戏回归时恢复该值。