2017-02-21 2 views
0

Если честно, я понятия не имею, что я делаю неправильно. Я хочу получить ImageButton объект от ClickListener, но что-то не так.LibGDX как получить кнопку от clickListener

public void createButton() { 
    button = new ImageButton(this.skin); 
    buttonUnitsList.add(button); 
    button.addListener(new ClickListener() { 
     @Override 
     public void clicked(InputEvent event, float x, float y) { 
      selectedUnit = buttonUnitsList.indexOf(this.getButton()); 
     } 
    });  
} 
+0

" Что нибудь"? Вы получили сообщение об ошибке? Вы пробовали пройти через это? –

+0

Нет, у меня нет ошибок, но для всех выбранных кнопок. Значение по умолчанию после клика всегда одно и то же. – Overborr

+0

Что такое 'getButton()'? Я предполагаю, что он возвращает 'button', который всегда будет последней созданной кнопкой. –

ответ

0

Чтобы получить Actor экземпляр, на котором событие был уволен вам нужно использовать метод getTarget() события. Если вы уверены в том, что слушатель будет использоваться только с помощью кнопок вы можете базовый тип это от Actor к Button

selectedUnit = buttonUnitsList.indexOf((Button)event.getTarget()); 

Обратите внимание, что если вы будете использовать слушатель для другого типа актера вы получите кастинг Exception

+0

Это сработало для меня. Я не могу отличить Actor от ImageButton, но я получаю родителя, и теперь он работает. Благодарю. – Overborr

+0

рад помочь, если ответ разрешит вашу проблему, вы можете [accep it] (http://stackoverflow.com/help/accepted-answer) –

Смежные вопросы