Учебное пособие: Разработка приложений для мобильного устройства

Потомки класса Screen определяют набор визуальных компонент для высокоуровнего взаимодействия с пользователем (формы, поля ввода, списки и т.п.). Надо отметить, что этот набор весьма примитивен и предоставляет минимум (однако достаточный) возможностей для взаимодействия с пользователем. Использовать этот набор в приложениях, требующих интерактивности (например в играх), не представляется возможным, но некоторые компоненты все же удобно использовать во вспомогательных целях (например поле ввода для ввода имени игрока в таблицу рекордов, меню и т.п.). Подробно рассматривать этот набор здесь не будем.

Класс Canvas предназначен для низкоуровнего взаимодействия с пользователем. В нем определен набор методов для обеспечения перерисовки содержимого экрана, получения информации о нажатии кнопок и т.п. Остановимся подробнее на некоторых особенностях использования класса Canvas.

Необходимо помнить о том, что на разных приборах, на которых может быть запущен мидлет, могут быть различные размеры дисплея. Для их получения используются методы:

int getHeight()

int getWidth()


Перерисовка содержимого экрана осуществляется ВМ самостоятельно и когда она будет выполнена, точно сказать нельзя. Можно лишь сообщить ВМ о том, что необходимо обновить содержимое экрана вызовом метода:

void repaint()

или

void repaint(int x, int y, int width, int height)

Можно принудить ВМ к немедленному выполнению перерисовки вызовом метода: void serviceRepaints()

Когда ВМ осуществляет перерисовку содержимого экрана, вызывается метод: void paint(Graphics g)

Объект g связан с изображением, которое будет выведено на экран. Использование объектов класса Graphics происходит так же, как и при работе с аплетами.

Необходимо заметить, что метод paint объявлен как абстрактный и поэтому для работы с объектом класса Canvas разработчик должен создать класс, расширяющий Canvas и определяющий метод paint.

Получить объект класса Graphics, который отвечает за перерисовку экрана, как это можно сделать для аплета методом: Graphics Applet.getGraphics(), для потомков класса MIDlet прямым способом невозможно. Можно попытаться сохранить объект, поступающий в качестве параметра в метод paint, но делать это не рекомендуется.

MIDP предоставляет элегантный метод для синхронизации перерисовки экрана с ходом выполнения основной программы. В классе Display присутствует метод:

callSerially(Runnable r)


Вызов этого метода заставляет ВМ вызывать метод run() объекта r сразу после окончания перерисовки экрана. Вызов осуществляется только один раз.

Объекты класса Canvas могут реагировать на нажатие кнопок при помощи методов:

keyPressed(int key)

keyReleased(int key)

keyRepeated(int key)

Использовать коды кнопок напрямую не рекомендуется. Для получения действия, связанного с тем или иным кодом кнопки, используется метод:

int getGameAction(int key)

Он возвращает код действия (коды определены как константы в классе Canvas на пример FIRE). Есть и обратный ему метод:

int getKeyCode(int gameAction)

Для каждого объекта класса Displayable может быть задан набор команд, определенных пользователем. Каждая команда является объектом класса Command и создается при помощи конструктора:

Command(String command, int type, int priority)


Для добавления и удаления команд в классе Displayable предусмотрены методы:

void addCommand(Command c)

К-во Просмотров: 525
Бесплатно скачать Учебное пособие: Разработка приложений для мобильного устройства