Оценить:
 Рейтинг: 0

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

Год написания книги
2011
<< 1 ... 7 8 9 10 11 12 13 14 15 ... 23 >>
На страницу:
11 из 23
Настройки чтения
Размер шрифта
Высота строк
Поля

repaint();

}

public void paint(Graphics g) {

// очистить холст

g.setColor(0, 0, 0); // черный //Прежде чем начинать

g.fillRect(0, 0, getWidth(), getHeight()); //рисование на холсте,

g.setColor(255, 255, 255); // белый //необходимо очистить фон

// вывести размер экрана

int y = 0;

String screenSize = "Screen size: " + Integer.toString(getWidth()) + " x " + Integer.toString(getHeight());

g.drawString(screenSize, 0, y, Graphics.TOP | Graphics.LEFT);

// вывести число цветов дисплея

y += Font.getDefaultFont().getHeight();

String numColors = "# of colors: " + Integer.toString(display.numColors());

g.drawString(numColors, 0, y, Graphics.TOP | Graphics.LEFT);

// вывести число доступных альфа-уровней

y += Font.getDefaultFont().getHeight();

String numAlphas = "# of alphas: " + Integer.toString(display.numAlphaLevels());

g.drawString(numAlphas, 0, y, Graphics.TOP | Graphics.LEFT);

// вывести полный объем памяти и объем свободной памяти

Runtime runtime = Runtime.getRuntime();

y += Font.getDefaultFont().getHeight();

String totalMem = "Total memory: " + Long.toString(runtime.totalMemory() / 1024) + "KB";

g.drawString(totalMem, 0, y, Graphics.TOP | Graphics.LEFT);

y += Font.getDefaultFont().getHeight();

String freeMem = "Free memory: " + Long.toString(runtime.freeMemory() / 1024) + "KB";

g.drawString(freeMem, 0, y, Graphics.TOP | Graphics.LEFT);

}

}

Класс SCanvas – производный от класса Canvas, его конструктор принимает единственный параметр Display. Конструктор просто определяет переменную display, после чего дисплей мидлета доступен в любом месте кода холста. Метод start() вызывает метод setCurrent() объекта Display и устанавливает холст в качестве экрана. Мидлет может иметь несколько экранов, в этом случае для переключения между ними вы можете использовать метод setCurrent(). Метод start() вызывает метод repaint(), выполняющий перерисовку холста.

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

Несмотря на то что класс 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
<< 1 ... 7 8 9 10 11 12 13 14 15 ... 23 >>
На страницу:
11 из 23