2016-05-10 3 views
0

Я делаю Idle Game, но теперь я не знаю, как сделать слушателей HUD. Можно ли создать экземпляр InputListener() в каждой кнопке моего hud? Мне нравится 20 кнопок или актеров.LibGDX-Scene2D: Как сделать хад с несколькими кнопками?

+0

Почему нет? ....... – Tenfour04

+0

Я имею в виду, это единственный вариант? Поскольку мне нужно получить доступ к переменным и функциям «кнопки» из метода touchDown из класса InputListener (я знаю, что могу получить доступ, но мне нужно передать параметры или создать внутренний класс, расширяющий InputListener и т. Д.). Это похоже на много кода, представьте себе 20 кнопок, создающих расширенные классы InputListener, каждый класс со своим кодом только для одной кнопки –

+0

Я действительно не понимаю вашу проблему. Похоже, у вас запутанная настройка. Слушателю нужно только вызвать один метод в 'touchDown'. Вы можете альтернативно назначить один и тот же прослушиватель каждой кнопке и проверить метод 'touchDown'' event.getListenerActor() 'для всех ваших кнопок, чтобы решить, какой метод вызывать. Если вы хотите, чтобы ваши кнопки больше походили на кнопки операционной системы (отмените нажатие, перетащив кнопку и отпустив), используйте ChangeListener вместо InputListener и используйте 'changed' вместо' touchDown', чтобы ответить на него. – Tenfour04

ответ

1

Просто используйте 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, где я спросил о выполнении многих слушателей.

+0

Эта тема мне очень помогла, спасибо –

1

Вот кнопка 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"); 
     }; 
    }); 
Смежные вопросы