Как метод keyDown () в libGDX работает правильно? - PullRequest
0 голосов
/ 04 октября 2018

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

Вот код для переопределенного 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 ]

0 голосов
/ 05 октября 2018

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

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

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

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

0 голосов
/ 05 октября 2018

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

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

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


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

Попробуйте 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;
}
...