Опрашивание в libGDX относится к механизму проверки текущего состояния устройства ввода, например, нажата ли определенная клавиша, где находится первый палец на экране и так далее. Это простой и быстрый способ обработки пользовательского ввода и его будет хватать для большинства аркадных игр.
Использование только опрашивания
Если вы решили положиться на использование только опрашивания, то можно пропустить некоторые события, например быстрое нажатие и отпускание клавиши. Если нужно убедиться в том, что определенная последовательность ввода была завершена, используйте обработку событий.
Опрос клавиатуры
Опрос ввода с клавиатуры осуществляется с помощью всего одной простой строки кода, как показано ниже.
boolean isAPressed = Gdx.input.isKeyPressed(Keys.A);
Параметр, передаваемый в этот метод – код клавиши. Вместо запоминания всех этих кодов, libGDX предоставляет статический Keys
класс
Input
интерфейса, который содержит коды клавиш, вы можете использовать их. Смотрите коды клавиш в
Keys классе.
Опрос мыши и сенсорного экрана
Есть несколько методов, относящихся к опросу мыши и сенсорного экрана. Для проверки одного или нескольких пальцев, находящихся в настоящее время на экране (что эквивалентно нажатию кнопки мыши), вы можете сделать следующее:
boolean isTouched = Gdx.input.isTouched();
Для мультитач экранов, возможно, вам будет интересно находиться ли определенный палец (указатель) в настоящее время на экране.
// Проверка есть ли сейчас прикосновение к экрану boolean firstFingerTouching = Gdx.input.isTouched(0); boolean secondFingerTouching = Gdx.input.isTouched(1); boolean thirdFingerTouching = Gdx.input.isTouched(2);
Каждый палец, который коснулся экрана, получает так называемый индекс указателя. Первый палец, прикоснувшись, получает индекс 0, следующий получает индекс 1 и так далее. Если палец отрывается от экрана и прикасается снова, в то время как другие пальцы по-прежнему на экране, то палец получит первый свободный индекс. Например:
- первый палец коснулся -> 0
- второй палец коснулся -> 1
- третий палец коснулся -> 2
- второй палец отпущен -> 1 становится свободным
- первый палец отпущен -> 0 становится свободным, на данный момент только 2 индекс используется
- другой палец коснулся -> 0, так как это первый свободный индекс
На персональном компьютере или в браузере всегда будет только один палец.
Если вы хотите проверить, если пользователь коснулся и отпустил любой палец, вы можете использовать justTouched()
метод:
// Проверка было ли прикосновение к экрану boolean justTouched = Gdx.input.justTouched();
Метод может использоваться в ситуациях, когда вы хотите быстро проверить последовательность прикосновения и отпускания пальца с экрана, например на экране, который говорит "коснитесь экрана чтобы продолжить".
Отметим, что данный метод является ненадежным, поскольку он основан на опросе.
Чтобы получить координаты конкретного пальца вы можете использовать следующие методы:
int firstX = Gdx.input.getX(); int firstY = Gdx.input.getY(); int secondX = Gdx.input.getX(1); int secondY = Gdx.input.getY(1);
Здесь мы получаем координаты прикосновения как индекс указателя 0 (0 по умолчанию) и индекса указателя 1. Координаты представлены в системе координат относительно экрана. Координаты (0, 0) находится в левом верхнем углу экрана, X-ось направлена вправо, Y-ось направлена вниз.
Кнопки мыши
На компьютере вы можете проверить, какие кнопки мыши нажаты в данный момент:
boolean leftPressed = Gdx.input.isButtonPressed(Input.Buttons.LEFT); boolean rightPressed = Gdx.input.isButtonPressed(Input.Buttons.RIGHT);
Для использования других констант смотрите Buttons класс libGDX фреймворка.
Интерпретация прикосновений на Android
На Android происходит эмуляция только левой кнопки мыши. Любое событие о прикосновении будет интерпретироваться так, как если бы оно было сделано нажатием левой кнопки мыши. Сенсорные экраны, очевидно, не имеют понятия левой, правой и средней кнопки.