Создание игр для мобильных телефонов - Страница 15

Изменить размер шрифта:

Совет Разработчику

Несмотря на то что класс SCanvas мидлета Skeleton произведен от класса Canvas, в большинстве примеров, рассматриваемых в книге, этот класс является производным от GameCanvas, который предоставляет специальные возможности, как дважды буферизованная графика и эффективная обработка ввода с клавиатуры. Эти возможности не нужны для создания приложения Skeleton.

Рисование на холсте – это большая часть кода мидлета Skeleton, выполняется методом paint(). Сейчас не очень важно внедряться во все тонкости этого кода, потому как следующая глава посвящена мобильной графике. Тем не менее я сделаю небольшое описание на тот случай, если вы хотите заглянуть немного вперед.

Метод начинается с очистки холста и заполнения его черным цветом. Затем изменяется цвет точки на белый и выводится текст. Сначала определяется размер экрана, этот параметр выводится по центру в верхней части экрана. Далее определяется число доступных цветов и альфа-уровней, эта информация тоже выводится на экран. И, наконец, выводится информация об общем количестве памяти и объеме свободной памяти.

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

Число альфа-уровней, поддерживаемых телефоном, определяет возможность управления прозрачными областями изображений. Например, телефоны поддерживают как минимум два альфа-уровня, поэтому пиксель может находиться в двух состояниях: прозрачном и непрозрачном.

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

Подготовка мидлета для распространения

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

В нашем примере единственным ресурсом является пиктограмма, отображаемая рядом с мидлетом на экране устройства. Чуть позже я поясню все, что касается пиктограмм. А пока давайте рассмотрим файл манифеста. Файл манифеста – это специальный текстовый файл, который содержит перечень свойств мидлета и их относительных значений. Эта информация очень важна, поскольку определяет название, пиктограмму и классовое имя каждого мидлета из JAR-файла, а также особые версии CLDC и MIDP, используемыми мидлетом. Помните, что в одном JAR-файле может храниться несколько мидлетов, при этом такой JAR-файл называется пакетом мидлетов.

Совет Разработчику

Примеры, рассматриваемые в книге, используют MIDP 2.0 и CLDC 1.0. Хотя некоторые мобильные телефоны поддерживают CLDC 2.0, версия CLDC 1.0 в большинстве случаев достаточна для программирования игр. Однако профиль MIDP 2.0 очень важен, поскольку в API было добавлено несколько возможностей, очень полезных для разработки мобильных игр.

Манифест пакета мидлетов должен иметь имя Manigfest.mf и размещаться в JAR-архиве вместе с ресурсами и классами мидлета. Ниже приведен код файла манифеста, ассоциированном с мидлетом Skeleton.

MIDlet-1: Skeleton, /icons/Skeleton_icon.png, SkeletonMIDlet

MIDlet-Name: Skeleton

MIDlet-Description: Skeleton Example MIDlet

MIDlet-Vendor: Stalefish Labs

MIDlet-Version: 1.0

MicroEdition-Configuration: CLDC-1.0

MicroEdition-Profile: MIDP-2.0

Первая строка файла манифеста определяет имя мидлета, а также его пиктограмму и имя выполняемого файла класса. Вы, вероятно, заметили, что свойство называется MIDlet-1. Если вы включите дополнительные мидлеты в пакет, то ссылаться на них следует MIDlet-2, MIDlet-3 и т. д. Свойства MIDlet-Name, MIDlet-Description, MIDlet-Vendor и MIDlet-Properties относятся ко всему пакету мидлетов. Однако в нашем случае мидлет Skeleton – единственный мидлет в пакете, поэтому нет ничего плохого в именовании всего пакета Skeleton. Два последних свойства определяют версию используемых мидлетом конфигурации и профиля: CLDC 1.0 и MIDP 2.0.

Ранее я упоминал, что наряду с файлами класса и файлом манифеста в JAR-архив необходимо включить файлы ресурсов. Как минимум мидлет должен иметь пиктограмму. Пиктограмма – изображение размером 12 12 пикселей, сохраненное в формате PNG. В зависимости от экрана телефона это может быть как цветное изображение, так и черно-белое. Я создал маленькое изображение черепа для мидлета Skeleton и сохранил его в файле Skeleton_ion.png.

Одно небольшое замечание касательно пиктограммы мидлета: она должна храниться в папке icons внутри JAR-архива. Подобно ZIP-файлам, вы можете помещать папки с файлами внутрь JAR-архивов. Чтобы поместить такой файл в JAR-архив, вы должны сослаться на этот файл из вложенной папки. Это что-то вроде неофициального соглашения помещать ресурсы мидлета в папку res, расположенную в папке с основным кодом приложения. Зная это, пиктограмму проще всего разметить внутри папки res в папке icon.

Говоря о структуре папок и мидлетах, нужно отметить, что существует стандартный способ организации файлов. На рис. 3.2 показана структура папок, которой необходимо придерживаться, организуя файлы мидлета.

Создание игр для мобильных телефонов - i_017.png

Рис. 3.2. Придерживаясь простых правил организации данных внутри архива мидлета, вы сможете легко организовать все файлы

Папки на рисунке используются для хранения следующих файлов:

► src – файлы кода Java;

► bin – файл манифеста, JAD-файл и JAR-файл;

► classes – компилированные файлы байт-кода Java;

► tmpclasses – компилированные фалы байт-кода Java, прошедшие предварительную верификацию;

► res – файлы всех ресурсов, кроме пиктограмм (изображения, звуки и т. п.);

► res/icons – файлы пиктограмм.

Совет Разработчику

Примеры мидлетов, включенных в состав J2ME Wireless Toolkit (среди них вы можете найти и игры, которые вы видели в предыдущей главе), построены согласно этому правилу.

Для распространения мидлета необходим не только файл манифеста, включаемый в JAR-файл, но и специальный дескриптор. Дескриптор приложения (application descriptor), или файл JAD, содержит информацию, подобную той, что хранится в файле манифеста. JAD-файл используется эмулятором J2ME при тестировании мидлета. Ниже приведено содержание дескриптора мидлета Skeleton:

MIDlet-1: Skeleton, /icons/Skeleton_icon.png, SkeletonMIDlet

MIDlet-Name: Skeleton

MIDlet-Description: Skeleton Example MIDlet

MIDlet-Vendor: Stalefish Labs

MIDlet-Version: 1.0 //Это ваша версия мидлета

MicroEdition-Configuration: CLDC-1.0

MicroEdition-Profile: MIDP-2.0

MIDlet-Jar-Size: 2491 //Если это значение не равно размеру JAR-файла, мидлет не запустится

MIDlet-Jar-URL: Skeleton.jar

За исключением двух последних строк, JAD-файл содержит информацию, с которой вы уже знакомы. Две последние строки определяют размер JAR-файла мидлета (в байтах) и его имя. Очень важно обновлять информацию о размере JAR-файла каждый раз, когда вы заново упаковываете мидлет, поскольку его величина скорее всего изменится при очередной сборке.

Сборка и тестирование завершенного приложения

В предыдущей главе вы познакомились с инструментом визуальной среды разработки KToolbar, который позволяет собирать и запускать мидлеты, затрачивая минимум усилий. Чтобы собрать мидлет Skeleton с помощью инструмента KToolbar, вы должны полностью скопировать в папку apps, расположенную в папке установки J2ME Wireless Toolkit. После того как Skeleton скопирован, вы можете открыть это приложение в KToolbar, для чего на инструментальной панели щелкните по кнопке Open Project (Открыть проект).

Оригинальный текст книги читать онлайн бесплатно в онлайн-библиотеке Knigger.com