我正在尝试在LibGDX中制作一个声音系统,在该系统中,您按下图像按钮,然后该图像按钮变成另一个图标,例如打开和关闭声音标志。我不知道该怎么做,因为一旦我为imagebutton创建了一个新的构造函数,它就会丢失监听器内部的代码。我觉得这里需要使用某种循环,并试图使其在循环内工作,但似乎不起作用。
这是我的代码:
musicBtn.addListener(new ChangeListener() { //musicBtn is the imageButton
@Override
public void changed(ChangeEvent event, Actor actor) {
if(GameManager.getInstance().gameData.isMusicOn()){//if the music is on and you press the music button then this turns it off
GameManager.getInstance().gameData.setMusicOn(false);
GameManager.getInstance().stopMusic();
} else {//if the music is off and players presses music button it turns on
GameManager.getInstance().gameData.setMusicOn(true);
GameManager.getInstance().playMusic();
}
GameManager.getInstance().saveData(); //method that saves the data
}
});
答案 0 :(得分:0)
您可以将Drawable传递给名为imageChecked的ImageButton构造函数:
ImageButton (Drawable imageUp, Drawable imageDown, Drawable imageChecked)
例如,这可能是声音异常的迹象。每当您按下按钮时,请检查音乐是否正在播放,如果将其设置为true,则将图像更改为声音关闭标志,否则将其设置为false,并将其更改回原来的状态。
if(GameManager.getInstance().gameData.isMusicOn()){
...
musicBtn.setChecked(true)
}else{
...
musicBtn.setChecked(false)
}