Параметр метода receiveMessage – это отправленное сообщение. Это сообщение всегда точка (Dot) или тире (Dash). В последнем случае значение переменной mode становится равным 2, в то время как в первом случае – 1. Если по какой-либо причине сообщение не содержит ни один из возможных вариантов, его значение переменной mode становится равным 0. После этого обнуляется таймер, обеспечивающий правильную работу мидлета. Мидлет Lighthouse
Последний функциональный представляющий интерес фрагмент кода мидлета Lighthouse – это сам класс мидлета, в котором есть код, отличающий его от всех созданных ранее в книге мидлетов. В листинге 14.9 приведен код класса LighthouseMIDlet.
Листинг 14.9. Класс LighthouseMIDlet при загрузке приложения позволяет пользователю выбрать режим работы: клиент или серверpublic class LighthouseMIDlet extends MIDlet implements CommandListener {
private Form initForm; // Объект типа Form используется для реализации интерфейса
private ChoiceGroup choices;
private LHCanvas gameCanvas;
public void startApp {
// создать стартовую форму
initForm = new Form("Connect 4");
// добавить выбор устройства
String[] peerNames = { "Server", "Client" }; // Создать группу выбора с двумя опциями: Клиент и Сервер
choices = new ChoiceGroup("Please select peer type:", Choice.EXCLUSIVE,
peerNames, null);
initForm.append(choices);
// добавить команды Play и Exit
Command exitCommand = new Command("Exit", Command.EXIT, 0);
initForm.addCommand(exitCommand);
Command playCommand = new Command("Play", Command.OK, 0);
initForm.addCommand(playCommand);
initForm.setCommandListener(this);
// вывести форму на экран
Display.getDisplay(this).setCurrent(initForm);
}
public void pauseApp {}
public void destroyApp(boolean unconditional) {
gameCanvas.stop;
}
public void commandAction(Command c, Displayable s) {
if (c.getCommandType == Command.EXIT) {
destroyApp(true);
notifyDestroyed;
}
else if (c.getCommandType == Command.OK) {
// определить тип функционирования приложения
String name = choices.getString(choices.getSelectedIndex); // Когда выполняется команда Play, отображается холст игры, в который передается тип работы (клиент или сервер)
// создать новый игровой холст
if (gameCanvas == null) {
gameCanvas = new LHCanvas(Display.getDisplay(this), name);
Command exitCommand = new Command("Exit", Command.EXIT, 0);
gameCanvas.addCommand(exitCommand);
gameCanvas.setCommandListener(this);
}
// запустить игровой холст
gameCanvas.start;
}
}
}