Im тестирование libgdx, но я застреваю в обработке ввода пользователем.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.
Спасибо!
Спасибо братан, это был глупый вопрос, но эта игра двигатель кадры не хватает из хорошей документации (Это не критика против двигателя, если честно, я считаю это потрясающий проект). Могу ли я в любое время переопределить этот входной процесс с другой стадией? – rsan
Для этого вы можете использовать InputMultiplexer. Вы можете добавить/удалить InputProcessors в мультиплексор по мере необходимости. Или просто установите другой InputProcessor, когда вам нужно. – Ludevik
Tnx, работает отлично :) – rsan