Программы должны использовать предписанные константы класса Canvas вместо значений уникода нажатой клавиши при проверке того, какая клавиша была нажата. Такой подход делает вашу программу более транспортабельной. Класс Canvas определяет константы для каждого из кодов клавиш, показанные в таблице 6.2.
Таблица 6.2.Константы класса Canvas, представляющие клавиши ITU-T
Константа класса Canvas — Описание
public static final int KEY NUMO— Представляет клавишу 0 клавишной панели
public static final int KEY NUM1— Представляет клавишу 1 клавишной панели
public static final int KEY NUM2— Представляет клавишу 2 клавишной панели
public static final int KEY_NUM3— Представляет клавишу 3 клавишной панели
public static final int KEY NUM4— Представляет клавишу 4 клавишной панели
public static final int KEY NUM5— Представляет клавишу 5 клавишной панели
public static final int KEY_NUM6— Представляет клавишу 6 клавишной панели
public static final int KEY NUM7— Представляет клавишу 7 клавишной панели
public static final int KEY_NUM8— Представляет клавишу В клавишной панели
public static final int KEY NUM9— Представляет клавишу В клавишной панели
public static final int KEY POUND— Представляет клавишу * клавишной панели
public static final int KEY STAR— Представляет клавишу # клавишной панели
Для нестандартных (зависящих от устройства) клавишей, таких, как кнопки Up (Вверх), Down (Вниз), Left (Влево), Right (Вправо) и Select (Выбор) на мобильных устройствах, код клавиши является значением, зависящим от реализации, и должен быть отрицательным в соответствии со спецификацией MIDP. Опять же, однако, вы должны использовать предопределенные константы, показанные в таблице 6.3, и не думать о настоящем целом значении.
Таблица 6.3.Константы класса Canvas, представляющие игровые действия, отображаемые на клавишах мобильного устройства
Константа класса Canvas — Описание
public static final int UP— Представляет клавишу панели со стрелкой вверх
public static final int DOWN— Представляет клавишу панели со стрелкой вниз
public static final int LEFT public static final int RIGHT— Представляет клавишу панели со стрелкой влево Представляет клавишу панели со стрелкой вправо
public static final int FIRE— Представляет клавишу панели со стрелкой запуска (выбора] на мобильных устройствах
Игровые действия
В дополнение к константам, которые вы уже видели, класс Canvas определяет константы GAME_A, GAME_B, GAME_C, GAME_D и FIRE, которые представляют игровые действия, отражая влияние игровой индустрии в J2ME. Значения этих констант нестандартны и изменяются в зависимости от реализации.
Игровые действия отражены на других клавишах, потому что большинство устройств не имеет клавиш или кнопок специально для игр. Значение игрового действия соответствует одному или более кодам клавиш, являющихся двоичными значениями, каждое из которых однозначно соответствует клавише. Вы можете определить определенное отображение с помощью следующих двух методов:
public int getKeyCode (int gameAction)
public int getGameAction(int keyCode)
В листинге 6.2 эти методы используются для вывода диагностической информации о каждом полученном событии отпускания клавиши. Если вы запустите эту программу и исследуете результат, вы увидите, что не каждая клавиша имеет связанное с ней игровое действие. В данном случае метод getGameAction () возвращает значение 0. Более того, не все устройства реализуют GAME_A, GAME_B, GAME_C и GAME_D. Примером устройства, которое не использует эти игровые действия, является Motorola Accompli 008.
Графическое рисование
Вы, несомненно, обратили внимание, что canvas, показанный на рисунке 6.2, был чистым за исключением экранной клавиши Exit (Выход). Причина этого кроется в том, что класс Canvasl не описывает свое визуальное представление. Все конкретные подклассы Canvas должны определять свой внешний вид для того, чтобы визуализировать какие-либо визуальные атрибуты. Для этого они должны привлекать помощь класса javax.microedition.lcdui.Graphics. Основная цель класса Graphics заключается в поддержке рисования на Canvas.
Графическая модель
Класс Graphics определяет возможности низкоуровневого графического рисования. Если вы уже разрабатывали программы на AWT или Swing, этот класс покажется вам очень знакомым. В действительности его свойства и программный интерфейс практически идентичны, хотя и являются подмножеством свойств класса Graphics J2SE.
Класс Graphics определяет модель, которая позволяет приложениям рисовать- или раскрашивать на языке Java — базовые двухмерные фигуры на Canvas . Описанным методом public void paint(Graphics g) осуществляется рисование в вашем подклассе Canvas , подменяя объявленный метод protected abstract в Canvas . Класс Canvas имеет пустое paint(Graphics g) определение, что объясняет, почему он не создает какого-либо визуального представления.
Читать дальше