Я делаю Idle Game, но теперь я не знаю, как сделать слушателей HUD. Можно ли создать экземпляр InputListener() в каждой кнопке моего hud? Мне нравится 20 кнопок или актеров.LibGDX-Scene2D: Как сделать хад с несколькими кнопками?
ответ
Просто используйте addListener()
метод для каждого актера, которым вы хотите быть clicable. Для этой цели я использовал ClickListener, хотя иногда рекомендуется использовать ChangeListener из-за лучшего поведения, когда кнопка отключена.
Так что вам нужно сделать, это просто
Button button;
//creating button...
button.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y)
{
//Do something
}
});
и то же самое для других кнопок/актеров на вашей сцене HUD.
Вы также можете указать take a look at this thread, где я спросил о выполнении многих слушателей.
Эта тема мне очень помогла, спасибо –
Вот кнопка scene2d, которая очень проста в использовании, я не понимаю, в чем проблема или почему вы беспокоитесь о том, что слушатель на каждой кнопке или объекте пользовательского интерфейса выглядит для меня довольно логичным.
button = new Button(buttonStyle);
button.setPosition(x, y);
button.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.log(TAG, "Button clicked");
};
});
Почему нет? ....... – Tenfour04
Я имею в виду, это единственный вариант? Поскольку мне нужно получить доступ к переменным и функциям «кнопки» из метода touchDown из класса InputListener (я знаю, что могу получить доступ, но мне нужно передать параметры или создать внутренний класс, расширяющий InputListener и т. Д.). Это похоже на много кода, представьте себе 20 кнопок, создающих расширенные классы InputListener, каждый класс со своим кодом только для одной кнопки –
Я действительно не понимаю вашу проблему. Похоже, у вас запутанная настройка. Слушателю нужно только вызвать один метод в 'touchDown'. Вы можете альтернативно назначить один и тот же прослушиватель каждой кнопке и проверить метод 'touchDown'' event.getListenerActor() 'для всех ваших кнопок, чтобы решить, какой метод вызывать. Если вы хотите, чтобы ваши кнопки больше походили на кнопки операционной системы (отмените нажатие, перетащив кнопку и отпустив), используйте ChangeListener вместо InputListener и используйте 'changed' вместо' touchDown', чтобы ответить на него. – Tenfour04