Как метод 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;
}