ImageButton和首选项

时间:2016-08-06 12:38:58

标签: java android libgdx scene2d

如何制作控制设定音乐的ImageButton(musicButton)?

我有GamePrefs class这两种方法

public static void setBoolean(String name, boolean val) {
    prefs.setBoolean(name, val);
    prefs.flush();
}

public static boolean getBoolean(String name) {
    return prefs.getBoolean(name);
}

我有musicButton

的两张图片
Texture t1 = new Texture("music");
Texture t2 = new Texture("music_off");
TextureRegion tr1 = new TextureRegion(t1);
TextureRegion tr2 = new TextureRegion(t2);

我知道我需要制作ImageButtonStyle,但我有很多字段imageUpimageDowncheckedcheckedOver ...我不知道知道我应该使用哪两个

我需要它来响应触摸并将当前音乐设置更改为开启或关闭

类似的东西:

GamePrefs.setBoolean("music", false)GamePrefs.setBoolean("music", true)

我将使用getBoolean()播放音乐

任何帮助?

1 个答案:

答案 0 :(得分:1)

为了创建这种按钮,我使用ImageButton.ImageButtonStyle upchecked属性:

public Button getMusicButton() {
    final Button button = new ImageButton(getMusicButtonStyle());
    button.setChecked(Prefs.isMusicOn());
    button.addListener(new ClickListener(){
        @Override
        public void clicked(InputEvent event, float x, float y) {
            MusicHandler.getInstance().toggleMusic();
        }
    });
    return button;
}

private ImageButton.ImageButtonStyle getMusicButtonStyle() {
    ImageButton.ImageButtonStyle style = new ImageButton.ImageButtonStyle();
    style.up = musicOffDrawable;
    style.checked = musicOnDrawable;
    return style;
}

对于音乐和声音,我使用此方法MusicHandler课程:

public void toggleMusic() {
    Prefs.toggleMusic();
    if (!Prefs.isMusicOn()) {
        music.stop();
    } else {
        music.play();
    }
}

最后在Prefs课程中有:

public static boolean isMusicOn() {
    return pref.getBoolean(MUSIC_ON);
}

public static void toggleMusic() {
    pref.putBoolean("music_on", !isMusicOn());
    pref.flush();
}