Java – это не просто язык программирования; это библиотека классов и интерфейсов, которая предлагает разработчикам широкий диапазон функций. Даже язык MIDP API, являющийся разделом Java, который был специально создан для программирования на мобильных телефонах, содержит весьма интересные функции. В MIDP API имеется пакет классов, предназначенных исключительно для мобильных игр. Данный пакет называется javax.microedition.lcdui.game. Он был добавлен в версии 2.0 MIDP API в ответ на многочисленные запросы разработчиков мобильных игр.

Классы в пакете javax.microedition.lcdui.game часто называют «API для мобильных игр»; эти классы очень важны, потому что они поддерживают функции, которые разработчикам MIDP 1.0 приходилось создавать самостоятельно. Другими словами, вам не придется изобретать велосипед, чтобы создавать новые игры в MIDP 2.0 API. Вероятно, самой важной функцией в API является встроенная поддержка графики с двойной буферизацией, которая максимально упрощает разработку игр с плавной графической анимацией. Кроме того, API поддерживает такие функции, как анимация спрайтов, вложенные слои, поиск ошибок и так далее.

API для мобильных игр в MIDP 2.0 включает пять классов:

► GameCanvas;

► Layer;

► LayerManager;

► Sprite;

► TiledLayer.

Остальные разделы данного приложения представляют собой краткий справочник по API для мобильных игр, который содержит описания классов MIDP 2.0, поддерживающих программирование для мобильных игр.

Класс GameCanvas

Класс GameCanvas происходит из стандартного класса Canvas; он предлагает специальную схему, которая поддерживает графику с двойной буферизацией. Вы можете воспринимать класс GameCanvas в качестве функции, обеспечивающей отображение интерфейса мобильных игр на экране телефона. Конечно, это может показаться вам странным, но класс GameCanvas отвечает за поддержку клавиатуры в играх. Для обработки команд с клавиатуры могут применяться и другие классы J2ME, однако поддержка клавиатуры в классе GameCanvas намного более эффективна, поэтому она лучше отвечает высоким требованиям, предъявляемым к мобильным играм.

Константы

В классе GameCanvas заданы следующие константы, которые используются для идентификации клавиш на мобильном телефоне:

► LEFT_PRESSED – клавиша ←;

► RIGHT_PRESSED – клавиша →;

► UP_PRESSED – клавиша ↑;

► DOWN_PRESSED – клавиша ↓;

► FIRE_PRESSED – клавиша Primary Fire;

► GAME_A_PRESSED – клавиша Game A (опционально);

► GAME_B_PRESSED – клавиша Game B (опционально);

► GAME_C_PRESSED – клавиша Game C (опционально);

► GAME_D_PRESSED – клавиша Game D (опционально).

Эти константы используются вместе с методикой getKeyStates(), которая описана в разделе «Методы» описания класса GameCanvas. Все константы клавиш являются масками бита, а это значит, что вы можете их использовать для того, чтобы определить, была нажата определенная клавиша или нет.

Как видно из списка, только клавиши LEFT_PRESSED, RIGHT_PRESSED, UP_PRESSED, DOWN_PRESSED и FIRE_PRESSED будут гарантированно поддерживаться на всех мобильных телефонах; остальные клавиши являются опциональными.

Конструктор

Класс GameCanvas имеет только один конструктор, принимающий один параметр, который определяет, можно ли использовать механизм управления, заданный в J2ME, по умолчанию: GameCanvas(boolean suppressKeyEvents).

Класс GameCanvas предлагает свою методику обработки нажатий клавиш, getKeyStates(), следовательно, большинство игр не используют стандартную систему реагирования на нажатия клавиш в J2ME. Поэтому многие игры напрямую обращаются к конструктору GameCanvas, позволяющему отключить методику восприятия нажатий клавиш по умолчанию. Методика getKeyStates() более эффективна, так как она не конфликтует с обычной системой восприятия клавиш. Если ваша игра использует смешанный подход к обработке нажатий клавиш, вам необходимо передать конструктору команду «false», чтобы активировать методику обработки нажатий клавиш по умолчанию.