#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()
.