Создание игр для мобильных телефонов (Моррисон) - страница 58

g.drawImage(slides[curSlide], getWidth() / 2, getHeight() / 2,

Graphics.HCENTER | Graphics.VCENTER);

// установить шрифт

Font f = Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,

Font.SIZE_MEDIUM);

g.setFont(f);

// вывести текущее содержание

g.setColor(0, 0, 0); // черный

g.drawString(captions[curSlide], getWidth() / 2, 0,

Graphics.HCENTER | Graphics.TOP);

}

}

Чтобы интегрировать холст в мидлет, необходимо создать объект класса SSCanvas в классе SlideshowMIDlet:

private SSCanvas canvas;

Затем в конструкторе класса SlideshowMIDlet эта переменная инициализируется. Полный код мидлета Slideshow приведен в листинге 4.4. Листинг 4.4. Код мидлета Slideshow

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class SlideshowMIDlet extends MIDlet implements CommandListener {

private SSCanvas canvas; //Использование настраиваемого холста – это уникальный фрагмент кода мидлета

public void startApp() {

if (canvas == null) {

canvas = new SSCanvas(Display.getDisplay(this));

Command exitCommand = new Command("Exit", Command.EXIT, 0);

canvas.addCommand(exitCommand);

canvas.setCommandListener(this);

}

// Start up the canvas

canvas.start();

}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

public void commandAction(Command c, Displayable s) {

if (c.getCommandType() == Command.EXIT) {

destroyApp(true);

notifyDestroyed();

}

}

}

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

Тестирование готового приложения

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

Рис. 4.6. Мидлет Slideshow реализует интерактивное слайд-шоу, в котором выводятся изображение и описание

Резюме

В этой главе вы узнали многое о программировании графики в MIDP API. Большая часть главы была посвящена объектам Graphics и Canvas, которые просты в применении. Вы познакомились с координатными системами и их использованием в мидлетах. Затем вы научились рисовать графические примитивы, настраивать шрифты и применять анкеры. Наконец, глава завершилась рассмотрением вывода изображений. Но, вероятно, самое важное в этой главе – написание двух примеров программ, демонстрирующих все приобретенные навыки работы с графикой.

Я думаю, что вам уже надоела эта подготовка, и вы готовы приступить к созданию полноценной игры. В следующей главе рассматривается наиболее важная тема, относящаяся к программированию игр, – спрайтовая анимация.