2017-02-21 2 views
3
table.setPosition(0, 0); 
table.setBounds(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
table.setTouchable(Touchable.enabled); 
table.addListener(new ClickListener(){ 
    @Override 
    public void touchUp (InputEvent event, float x, float y, int pointer, int button) { 
     System.out.println("me working"); 
     nextPhrase(); 
    } 
}); 
stage.addActor(table); 

Метод touchUp не запускается. Таблица содержит изображение и метку и заполняет экран. Мне нужен метод nextPhrase() для запуска всякий раз, когда затрагивается экран. Что мне делать?Почему не срабатывает триггер метода?

+0

Я не знаю libgdx, но я там читал (http://stackoverflow.com/questions/35287866/libgdx-how-to-handle-touch-event), что вам нужен InputListener, а не ClickListener (который прослушивание кликов, я считаю) –

ответ

3

Я не знаю вашего полного кода, но предположил, что вы забыли обновить свой Stage. Если да, положите это на метод рендеринга/обновления. Это делается для обновления всего вашего Actors внутри вашей сцены.

stage.act(); 

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

Gdx.input.setInputProcessor(stage); 
+0

Спасибо! У меня есть stage.act(), но я забыл установить InputProcessor. –

+0

Я рад, что он работает. Кроме того, не забудьте принять ответ. : D – Sparcsky

0

touchUp запускается только в том случае, если touchDown возвращает true. В противном случае касание больше не отслеживается.

Я бы рекомендовал использовать функцию «clicked» вместо функции touchUp, которая обрабатывает это для вас.

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