Как метод keyDown() в libGDX работает правильно?

Недавно я начал программировать на Java с libGDX. Теперь я попытался сделать небольшую заставку (появляется фоновое изображение, затем слева всплывает актер, актер говорит!), И возникает проблема: все работает нормально, кроме клавиши "Ввод", чтобы переадресация диалога Таким образом, появляется первое диалоговое окно, и для продолжения необходимо нажать клавишу "C", затем должно появиться второе сообщение, а затем после второго нажатия "C" актер должен исчезнуть, и игра должна начаться.

Вот код для переопределенного keyDown()- Метод:

@Override
public boolean keyDown(int keyCode) {
    if(Gdx.input.isKeyPressed(Input.Keys.C))
        if(continueKey.isVisible())
            scene.loadNextSegment();
    return false;
}

класс выглядит следующим образом:

public class StoryScreen extends BaseScreen {

и класс BaseScreen:

public abstract class BaseScreen implements Screen, InputProcessor {

Любая помощь будет оценена.

С наилучшими пожеланиями DKJ1337!

Редактировать: если я выполняю обработку ввода внутри метода обновления класса StoryScreen, то он работает, но он просто пропускает всю вторую часть диалога.

2 ответа

Вы где-нибудь вызывали Gdx.input.setInputProcessor()?

Кстати, в вашем коде есть другие проблемы:

@Override
public boolean keyDown(int keyCode) {
    if(keyCode == Input.Keys.C)
        if(continueKey.isVisible()) {
            scene.loadNextSegment();
            return true;
        }
    return false;
}

Сравните с заданным кодом и верните true, когда вы что-то сделали.

Исправлено (так как оригинальный ответ был отклонен) после некоторого исследования в комментариях:

Убедитесь, что то, что реализует InputProcessor зарегистрирован в Input.setInputProcessor(InputProcessor),

Более подробно описано здесь вики libgdx


Неправильный ответ

Пробовать return true когда событие должно быть обработано InputProcessor

например:

@Override
public boolean keyDown(int keyCode) {
    if(Gdx.input.isKeyPressed(Input.Keys.C))
        if(continueKey.isVisible()) {
            scene.loadNextSegment();
            return true;
        }
    return false;
}
Другие вопросы по тегам