Вторник, 2024-03-19, 10:57 AM

Поиск
Меню
Категории раздела
Поддержи проект!
Рекомендуем


Опрашивание событий (Polling)

Опрашивание относится к механизму проверки текущего состояния устройства ввода, например нажали ли определенная клавиша, где находится первый палец на экране и так далее. Это простой и быстрый способ обработки пользовательского ввода и его будет хватать для большинства аркадных игр.

Внимание: Если вы решили положиться на использование только опрашивания, то можно пропустить некоторые события, например быстрое нажатие и отпускание клавиши. Если нужно убедиться в том, что определенная последовательность ввода была завершена, используйте обработку событий.

Опрос клавиатуры

Опрос ввода с клавиатуры осуществляется с помощью всего одной простой строки кода, как показано ниже.

boolean isAPressed = Gdx.input.isKeyPressed(Keys.A);

Параметр передаваемый в этот метод код клавиши. Вместо запоминания всех этих кодов есть статический класс 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 и так далее. Если палец отрывается от экрана и прикасается снова, в то время как другие пальцы по-прежнему на экране, то палец получит первый свободный индекс. Например:

  1. первый палец коснулся -> 0
  2. второй палец коснулся -> 1
  3. третий палец коснулся -> 2
  4. второй палец отпущен -> 1 становится свободным
  5. первый палец отпущен -> 0 становится свободным , на данный момент только 2 индекс используется
  6. другой палец коснулся -> 0, так как это первый свободный индекс

На персональном компьютере или в браузере всегда будет только один палец.

Если вы хотите проверить, если пользователь коснулся и отпустил любой палец, вы можете использовать следующий метод:

// Проверка было ли прикосновение к экрану
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 для использования других констант.

Обратите внимание, что на Android эмуляция только левой кнопкой мыши. Любое событие прикосновения будет интерпретироваться, как если бы оно было выдано нажатием левым кнопки мыши. Сенсорные экраны очевидно, не имеют понятия левой, правой и средней кнопки.