KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Майкл Моррисон - Создание игр для мобильных телефонов

Майкл Моррисон - Создание игр для мобильных телефонов

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Майкл Моррисон - Создание игр для мобильных телефонов". Жанр: Программирование издательство неизвестно, год неизвестен.
Перейти на страницу:

В копилку Игрока

Если вам доводилось работать с J2ME ранее, то вам, вероятно, будет интересно узнать, что пакет javax.microedition.ldui.game появился только в MIDP 2.0. Вот почему MIDP 2.0 представляет собой значительное продвижение вперед и укрепление позиций J2ME как технологии мобильных игр.

Пакеты javax.microedition.media и javax.microedition.media.control содержат классы и интерфейсы для управления звуком в мидлете. Эти пакеты представляют MIDP 2.0 Media API, который является подмножеством более обширного Mobile Media API. Полный Mobile Media API поддерживает большое число медиа-объектов, например, изображения, звуки, музыку и видео. Возможности по работе с медиа-данными в MIDP 2.0 API ограниченны и сведены к генерации тонов и воспроизведению цифровых звуковых эффектов через wave-файлы. О специфике воспроизведения звука я расскажу в главе 8.

Ранее вы узнали, что CLDC служит основой для работы в сетях и ввода/вывода с помощью Generic Connection Framework (GCF). Надстройкой MIDP API над этим является пакет javax.microedition.io, который включает в себя ряд интерфейсов и классов для установления беспроводных соединений с сетями и обмена данными. Пакет javax.microedition.pki используется в сочетании с пакетом javax.microedition.io для выполнения защищенных соединений. В главе 14 вы узнаете, как выполнять основные сетевые задачи.

Поскольку мобильные телефоны не имеют жестких дисков или явной файловой системы (пока), вы, вероятно, не станете полагаться на файлы для хранения постоянных данных мидлетов. Вместо этого MIDP API предлагает другой вариант сохранения и доступа к постоянным данным мидлета – Record Management System (RMS, Система управления записями). MIDP RMS реализует простой API базы данных (основанный на записях) для постоянного хранения данных, например, список лучших достижений или данных сохраненных игр. Классы и интерфейсы, составляющие RMS, содержатся в пакете javax.microedition.rms.

Понятие о мидлетах

Sun Microsystems использует суффикс «let» для обозначения различных типов программ, создаваемых с помощью Java. Апплеты (applet), сервлеты (servlet), спотлеты (spotlet) и теперь мидлеты (MIDlet) – это лишь часть из них. Мидлеты – это программы, разработанные с использованием J2ME API, которые запускаются в мобильной среде. Мидлетам требуется особая среда выполнения. Эта среда главным образом состоит из менеджера приложений (application manager), который выполняет функции выбора и запуска мидлетов на мобильном устройстве. Этот менеджер приложений для мидлетов отвечает за создание обрамляющего окна мидлета.

Внутри мидлета

Пожалуй, не столь удивительно, что каждый мидлет должен быть производным от стандартного класса, являющегося частью MIDP API. Этот класс расположен в пакете javax.microedition.midlet и носит название MIDlet. Хотя этот класс определяет несколько методов, три из них очень важны для разработки собственных мидлетов:

► startApp() – запустить мидлет;

► pauseApp() – приостановить выполнение мидлета;

► destroyApp() – удалить мидлет.

Чтобы лучше понять, как эти методы влияют на мидлет, важно уяснить, что мидлет имеет три различных состояния, определяющих его работу: Active (Активное), Paused (Приостановленное) и Destroyed (Разрушенное). Этим трем состояниям соответствуют три метода, которые обычно напрямую вызываются менеджером приложения среды выполнения. В некоторых случаях вы можете вызывать их самостоятельно, особенно метод destroyApp(). Эти методы объединены термином «методы жизненного цикла» (life cycle methods), потому что они управляют жизненным циклом мидлета. Именно эти методы позволяют менеджеру приложений управлять несколькими мидлетами и предоставлять каждому из них доступ к ресурсам устройства.

Жизненный цикл мидлета

Жизненный цикл состоит из трех частей, о которых вы только что узнали. В обычном мидлете большая часть времени проходит в состояниях Active и Paused, а при закрытии мидлета он переходит в состояние Destroyed до тех пор, пока не будет полностью удален из памяти. В большинстве случаев вы переопределяете методы жизненного цикла мидлета, потому как важно выделять и высвобождать ресурсы мобильного телефона в соответствии с каждым из состояний. Например, при запуске игрового мидлета, вероятно, возникает необходимость создать объекты и/или загрузить данные. Когда выполнение мидлета приостанавливается, целесообразно высвободить часть ресурсов, закрыть соединения с сетью и приостановить воспроизведение музыки в игре. И, наконец, при условии разрушения мидлета необходимо высвободить память, а также сохранить нужные данные.

Помните, что мидлет может входить и выходить из состояний Active и Paused не один раз в течение жизненного цикла. Но если мидлет войдет в состояние Destroyed, он уже не сможет вернуться обратно. С этой точки зрения, отдельный игровой мидлет может прожить лишь одну жизнь.

Команды мидлета

Кроме переопределения методов жизненного цикла, большинство мидлетов реализуют метод commandAction(), обработчик событий, определенный интерфейсом javax.microedition.ldui.CommandListener. Команды используются для контроля игровых мидлетов и инициализации таких действий, как приостановка игры, сохранение данных, изменение настроек и выход из игры. Команды мидлета доступны через экранные кнопки (soft button) или меню и должны обрабатываться методом commandAction().

...

В копилку Игрока

Экранные кнопки (soft buttons) – это специальные кнопки, расположенные на дисплее мобильного телефона. Они предназначены для выполнения специальных команд мидлетов. Щелчок по кнопке выполняет команду, с которой эта кнопка связана. Щелчки по кнопкам для управления игрой обрабатываются иначе, чем нажатия экранных кнопок. Подробнее вы узнаете об этом из главы 6.

Дисплей, экраны и холсты

Одна из важнейших концепций мидлетов, которой стоит уделить внимание, – это класс Display, представляющий собой менеджер экрана мобильного устройства. Класс Display определен в пакете javax.microedition.lcdui, как и GUI-классы. Этот класс отвечает за управление экраном и вводом пользователя.

Вам не придется создавать объект Display, обычно вы получаете ссылку на объект Display в методе startApp() игрового мидлета, после чего настраиваете экран и пользовательский интерфейс. Для каждого мидлета, выполняемого на устройстве, существует только одно представление Display.

Другой важный класс, имеющий отношение к экрану устройства, – это javax.miccroedition.lcdui.Canvas, который представляет собой абстрактную поверхность для рисования, размер которой равен размеру экрана. Холст (canvas) используется для выполнения прямых операций рисования, например, рисования линий и кривых или отображения картинок. Как вы, вероятно, можете догадаться, холсты формируют основу для вывода игровых изображений. На самом деле существует специальный класс javax.microedition.lcdui.GameCanvas, который предназначен для создания графики для игр. Класс GameCanvas отличается от класса Canvas тем, что поддерживает высокоэффективные средства отображения анимации, часто применяемой в играх.

...

В копилку Игрока

Если вы создаете игру с возможностью изменения настроек, или вам необходимо получить информацию от пользователя, используйте класс javax.microedition.lcdui.Screen. Экран (screen) – это настраиваемый GUI-компонент мидлета, который служит базовым классом для других важных компонентов. Значимость экранов заключается в том, что они отображают всю экранную информацию. Несколько экранов не могут отображаться одновременно. Вы можете представить несколько экранов как карты, которые берете одну за другой. Большинство мидлетов используют классы javax.miroedition.lcdui.Form, javax.miroedition.lcdui.TextBox, или javax.miroedition.lcdui.List, поскольку они предоставляют широкие возможности. Экраны можно использовать в совокупности с объектами класса Canvas, в результате чего для игрового мидлета можно создать полноценный GUI. Нельзя отображать экран и холст одновременно, однако вы можете переключаться между отображениями.

Основы разработки мидлетов

Прежде чем приступить к разработке мидлетов, необходимо установить J2ME Wireless Toolkit, который находится на прилагаемом компакт-диске. Вы также можете использовать инструменты для разработки мобильных приложений, выпускаемые другими компаниями, если вашей целью является написание приложения для конкретной модели телефона. Но если вы хотите эмулировать мобильные телефоны с поддержкой Java на компьютере, можно использовать J2ME Wireless Toolkit.

Чтобы воплотить концепцию мидлета в реальность, необходимо:

1. разработать файлы кода;

2. скомпилировать файлы с исходным кодом в классы байт-кода;

3. выполнить предварительную верификацию классов байт-кода;

4. упаковать файлы байт-кода в файл JAR, добавить необходимые ресурсы и файлы манифеста (подробнее об этом чуть позже);

5. разработать JAD-файл (описатель приложения), сопровождающий JAR-файл;

6. протестировать и отладить мидлет.

Шаг 1 выполняется в обычном текстовом редакторе. Если у вас нет специального редактора кода, можно воспользоваться, например, текстовым редактором Notepad. Шаг 2 подразумевает использование стандартного компилятора Java для компиляции файлов мидлета с исходным кодом. На шаге 3 необходимо выполнить предварительную верификацию скомпилированного кода, для чего используйте специальный инструмент предварительной верификации. На шаге 4 выполняется упаковка файлов кода мидлета в Java-архив (JAR). Шаг 5 требует создания специального файла описания – текстового файла, содержащего информацию о вашем мидлете. И, наконец, на шаге 6 вы можете протестировать мидлет в эмуляторе J2ME.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*