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

Шрифт
Интервал


Команда Exit мидлета Skeleton обрабатывается методом commandAction():


public void commandAction(Command c, Displayable s) {

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

destroyApp(true);

notifyDestroyed();

}

}


Методу commandAction() передаются два аргумента – команда и экран, на котором будет сгенерирована команда. В рассматриваемом примере интересна лишь команда. Объект Command сравнивается с константой Command.EXIT, таким образом осуществляется проверка, действительно ли выполняется команда Exit. Если да, то вызывается метод destroyApp() и мидлет разрушается. Аргумент true означает, что разрушение безусловно, то есть мидлет разрушается в любом случае, даже если возникла ошибка. Затем вызывается метод notifyDestriyed(), который сообщает менеджеру приложений о том, что мидлет перешел в состояние Destroyed.

Мидлет Skeleton не работает с методами pauseApp() и destroyApp(), но вы должны реализовать их в любом случае:


public void pauseApp() {}

public void destroyApp(boolean unconditional) {}


Хотя вы уже видели все фрагменты кода, полное содержимое файла SkeletonMIDlet.java представлено в листинге 3.1.

Листинг 3.1. Код класса SkeletonMIDlet, расположенный в файле SkeletonMIDlet.java

import javax.microedition.midlet.*;

import javax.microedition.lcdui.*;

public class SkeletonMIDlet extends MIDlet implements CommandListener {

private SCanvas canvas;

public void startApp() {

if (canvas == null) {

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

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

canvas.addCommand(exitCommand);

canvas.setCommandListener(this);

}

// инициализация холста

canvas.start();

}

public void pauseApp() {} //В данном примере эти методы не используются вовсе, однако все равно

public void destroyApp(boolean unconditional) {} //необходимо предоставить пустые реализации, чтобы удовлетворить требованиям класса MIDLET

public void commandAction(Command c, Displayable s) {

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

destroyApp(true); //В конце следует вызвать метод destroyApp(), хотя на самом деле

notifyDestroyed(); //работу мидлета завершает метод notifyDestroyed()

}

}

}


Оставшаяся часть кода мидлета Skeleton связана с классом SCanvas и представлена в листинге 3.2.

Листинг 3.2. Класс SCanvas служит как настраиваемый холст мидлета Skeleton

import javax.microedition.lcdui.*;