2012-04-30 2 views
4

При попытке установить простой ImageButton на сцене он, похоже, не обнаружил кликов.ImageButton, похоже, не обнаруживает кликов (Scene2d.ui)

ImageButton btnStart = new ImageButton(ButtonArt.UP, ButtonArt.DOWN)); 

// btnStart.setClickListener(new ClickListener() { 
//   @Override 
//   public void click(Actor a, float arg1, float arg2) { 
//    a.visible = false; 
//   } 
//  }); 

stage.addActor(btnStart); 

ButtonArt.UP и ButtonArt.DOWN - это текстурыРегионы каждого состояния. Теперь, когда я нажимаю на кнопку, она не меняется! Я также попробовал вышеуказанный ClickListener (для тестирования), но, похоже, это тоже не сработало.

В моем методе визуализации я просто вызываю stage.act() и stage.render(). Я также пробовал рисовать TextureRegions с помощью SpriteBatch в моем методе визуализации, и они на самом деле разные текстуры.

Я что-то не так?

ответ

8

Вам нужно будет установить сцену в качестве inputprocessor:

Gdx.input.setInputProcessor(stage); 

Если вам нужно иметь несколько inputprocessors (например, вам нужны клики, зарегистрированные за пределами сцены), вам нужно будет использовать InputMultiplexer, как это:

InputMultiplexer plex = new InputMultiplexer(); 
plex.addProcessor(myOtherProcessor); 
plex.addProcessor(stage); 
Gdx.input.setInputProcessor(plex); 
+0

Спасибо, я не знал, что вам нужно установить входной процессор. – user717572

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