Мышь, сенсорный экран и клавиатура

Основные устройства, которые поддерживает libGDX – мышь для компьютера/браузера, сенсорный экран для Android и клавиатура. Рассмотрим, как libGDX абстрагирует эти устройства.

Клавиатура

Клавиатура сообщает о пользовательском вводе, генерируя события нажатия и отпускания клавиши. Каждое событие несет в себе код клавиши, который идентифицирует нажатую/отпущенную клавишу. Эти коды отличаются друг от друга на разных платформах. libGDX пытается скрыть этот факт, предоставляя свою собственную таблицу кодов клавиш, смотрите класс Key. Вы можете запросить, какие клавиши сейчас нажаты с помощью опроса (Polling).

Сами по себе коды клавиш не несут информации о введенном пользователем символе. Часто эта информация зависит от состояния нескольких клавиш, например символ 'A' генерируется одновременным нажатием 'A' и 'Shift'. В общем, получение зависящих символов (которые были нажаты) из состояния клавиатуры нетривиально. К счастью, операционная система обычно имеет средство для обработки событий, которые не только сообщают о коде клавиши, но и о символе. libGDX использует этот механизм, чтобы предоставить вам информацию о символе. Смотрите обработку событий.

Мышь и сенсорный экран

Мышь и сенсорный экран позволяют пользователю указывать на что-либо на экране. Оба механизма ввода сообщают о местонахождении взаимодействия, передавая 2D координаты относительно левого верхнего угла экрана. Ось X указывает направление вправо, а ось Y указывает вниз.

Мышь дает дополнительную информацию, а именно какая кнопка была нажата. Большинство мышей имеют левую и правую кнопку, а также среднюю кнопку. Кроме того, часто имеется колесо прокрутки, которое может быть использовано для масштабирования или прокрутки во многих приложениях.

Сенсорный экран не имеет такого понятия как кнопки и сложный из-за возможности аппаратного оборудования отслеживать несколько прикосновений руки одновременно. Первое поколение Android телефонов поддерживало только одно прикосновение. Начиная с телефонов как Motorola Droid, мультитач экраны стали стандартной особенностью большинства Android телефонов.

Заметьте, что прикосновение к экрану на различных устройствах может быть реализовано по-разному. Это может повлиять на то, как обрабатывать событие. Будьте готовы проверить управление в игре на нескольких устройствах. В интернете существует множество приложений для тестирование ввода, которые помогаю определить, как устройство сообщает о нажатии и сделать такой дизайн схемы управления игрой, который будет лучше всего работать на множестве устройств.

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

Система координат на Android

Система координат на Android относительна портретного или ландшафтного режима, в зависимости от установок вашего приложения.

События мыши и сенсорного экрана могут быть опрошены или обработаны при помощи обработчика событий.