Я тестирую libgdx, но я застреваю в обработке пользовательского ввода.
Моя первая попытка заключалась в использовании Gdx.input непосредственно из метода рендеринга, но мне кажется, что я заново изобретаю колесо, потому что я пишу много кода для обнаружения области ввода, когда я получаю события касания.
Я почти уверен, что лучше использовать класс Актера, но есть что-то, что я должен делать неправильно, потому что события никогда не срабатывают.
Вот мой код:
...
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.
Спасибо!