Я тестирую libgdx, но я застреваю в обработке пользовательского ввода.
Моей первой попыткой было использование Gdx.input непосредственно из метода рендеринга, но я чувствую, что заново изобретаю колесо, потому что пишу много кода для определения области ввода при получении событий касания.
Я почти уверен, что лучше использовать класс Actor, но я должен что-то делать неправильно, потому что события никогда не запускаются.
Вот мой код:
...
Texture texture = new Texture(Gdx.files.internal("assets/sprite-sheet.png"));
singlePlayerButton = new Image("SinglePlayerButton", new TextureRegion(texture,0,0,50,50)){
@Override
public boolean touchDown(float x, float y, int pointer) {
// TODO Auto-generated method stub
System.out.println("touch down");
return super.touchDown(x, y, pointer);
}
@Override
public void touchUp(float x, float y, int pointer) {
System.out.println("touch up");
}
};
stage.addActor(singlePlayerButton);
...
public void render(float delta) {
// Clear the screen
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
stage.draw();
spriteBatch.end();
}
Изображение отображается хорошо, но не имеет значения, сколько раз я нажимаю на него, событие не срабатывает. Что мне не хватает? Зарегистрировать событие? Я не могу найти метод addTouchListener () в классе Stage или Actor.
Спасибо!