Экраны LibGDX меняют inputprocessor

#android #input #touch #libgdx #screen

#Android #ввод #коснитесь #libgdx #экран

Вопрос:

Я работаю над новой игрой и внедряю экраны с LibGDX.

Я немного застрял на экране в сочетании с касаниями.

У меня есть это в моем методе рендеринга:

 if (Gdx.input.isTouched()) {
game.setScreen(new GameScreen(game));
dispose();
}
  

На данный момент у меня есть 4 разных экрана, и все они меняются при запуске isTouch, проблема в том, что он переходит с экрана 1 на 4 после того, как я один раз коснулся первого экрана.
Я попытался установить для inputprocessor значение null, но он по-прежнему переходит с экрана 1 на 4, не дожидаясь на каждом экране. Кажется, что касание на экране 1 автоматически запускается и на экране 2, 3 и 4. Как я могу сбросить inputprocessor или вернуть его значение true перед загрузкой следующего экрана, чтобы он не регистрировал касание с экрана 1?

Заранее спасибо

Ответ №1:

Статика Gdx.input.isTouched() не зависит от какой-либо InputProcessor установки.

На самом деле вы не переходите непосредственно с экрана 1 на экран 4. Он идет 1 -> 2 -> 3 -> 4, но так быстро, что кажется, что он мгновенно перейдет на экран 4. Здесь нет многопоточности, одновременно всегда активен только один экран.

Позвольте всем вашим экранам implement InputProcessor и измените экран в touchUp методе. В вашем Screen.show() методе вы установите активный процессор ввода на текущий экран, а в Screen.hide() нем — на null . Таким образом, вы меняете экран только один раз за касание, а не в каждом кадре до тех пор, пока экран isTouched() .