Как изменить кнопку изображения при нажатии на нее? - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь создать звуковую систему в LibGDX, в которой вы нажимаете кнопку изображения, а затем эта кнопка изображения превращается в другую иконку, как при включении и выключении звуковых знаков. Я понятия не имею, как это сделать, потому что, как только я создаю новый конструктор для кнопки image, он теряет код, который находится внутри Listener. У меня такое чувство, что здесь нужно использовать какой-то цикл, и я пытался заставить его работать внутри циклов, но, похоже, он не работает.

вот мой код:

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

               }
           });

1 Ответ

0 голосов
/ 03 мая 2019

Вы можете передать Drawable конструктору ImageButton с именем imageChecked:

ImageButton (Drawable imageUp, Drawable imageDown, Drawable imageChecked)

это может быть, например, знак отключения звука. Всякий раз, когда вы нажимаете кнопку, проверяйте, играет ли музыка, если для нее установлено значение true, это изменит изображение на знак отключения звука, в противном случае установите значение false, и оно вернется к тому, что было у вас

if(GameManager.getInstance().gameData.isMusicOn()){
     ...
     musicBtn.setChecked(true)
}else{
    ...
    musicBtn.setChecked(false)
}
...