我的菜单屏幕上有一个声音按钮。它有两个图像。一个正常,另一个被检查(表示声音关闭)。
我正在使用布尔变量来获取此按钮的状态。如果是真的,声音将播放其他声音将关闭。我正在使用它来控制游戏中的声音。
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。但是它没有显示十字标记图像。它显示第一个图像。但功能很好。如果我点击,声音将会亮起。 如果有人解释如何解决这个问题会很有帮助。
答案 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
的状态,以便在游戏回归时恢复该值。