private Display display;
private boolean sleeping;
private long frameDelay;
private Image[] background = new Image[2]; //Эта переменная говорит о том, является данное приложение образом сервера или клиента
private LHClient client;
private LHServer server;
private boolean isServer;
private String status = "";
private int mode; // 0 = none, 1 = dot, 2 = dash
private int morseTimer;Переменная background содержит два изображения маяка: с включенным и погашенным огнем. Переменные server и client – это объекты сервера и клиента соответственно, они отвечают за работу мидлета с сетью. Переменная isServer очень важна, она определяет сетевой режим работы мидлета. Эта переменная определяет, как работает мидлет – как клиент или как сервер.
Текст статуса хранится в переменной status. временная mode используется для контроля вывода изображений маяка, а также интервалов времени. Помните, что точка в азбуке Морзе по длительности в три раза меньше тире, поэтому в мидлете Lighthouse используется таймер вывода изображения маяка, который задерживает изображение с включенным огнем в соответствии с отображаемым сигналом. За задержку отвечают переменные mode и morseTimer.
Переменные холста широко используются в методе start(), код которого приведен в листинге 14.5.
Листинг 14.5. Метод start() класса LHCanvas запускает сервис Клиент-Серверpublic void start() {
// установить экран как холст
display.setCurrent(this);
// инициализация фонового изображения
try {
background[0] = Image.createImage("/LighthouseOff.png");
background[1] = Image.createImage("/LighthouseOn.png");
}
catch (IOException e) {
System.err.println("Failed loading images!");
}
// инициализация режима и таймера
mode = 0;
morseTimer = 0;
// запуск сетевого сервиса
if (isServer) { //Начиная с этой точки, мидлет работает в режиме сервера или клиента
server = new LHServer(this);
server.start();
}
else {
client = new LHClient(this);
client.start();
}
// начало потока анимации
sleeping = false;
Thread t = new Thread(this);
t.start();
}