Иллюстрированный самоучитель по программированию мобильных телефонов

Создание фонового изображения

//* метод, создающий объект класса TiledLayer
и загружающий фоновое изображение
*/
public TiledLayer Fon()throws <strong>I</strong> OException
{
// загрузка изображения из файла ресурса
Image im = Image.createlmage("/fon.png");
// создаем объект класса TiledLayer
fonPole = new TiledLayer(/*столбцы*/10,/*строки*/10,
/*изображение*/lm,/*ширина*/15,/*высота*/15);
// разметка игрового поля
int[] pole =
{

5, 5, 5, 5, 5, 5, 5, 5, 5, 5,

1, 5, 5, 5, 5, 5, 5, 5, 5, 5,

1, 1, 5, 5, 5, 5, 5, 5, 5, 5,

1, 1, 1, 1, 5, 5, 5, 1, 1, 5,

1, 1, 1, 1, 1, 5, 5, 1, 1, 1,

1, 1, 1, 1, 1, 1, 1, 1, 6, 6,

1, 1, 1, 1, 1, 1, 6, 6, 6, 6,

2, 4, 4, 4, 4, 4, 3, 3, 3, 3,

2, 2, 2, 4, 4, 4, 3, 3, 3, 3,

2, 2, 2, 4, 4, 4, 3, 3, 3, 3

};
// цикл, считывающий разметку поля
for(int i = 0; i < pole.length; i + +)
{
/* присваиваем каждому элементу игрового
поля определенную ячейку изображения
im*/ fonPole.setCell(i % 10, i / 10, pole[i]);
}
return fonPole;
}
public void stop(){ z = false;
}
public void run()
{
// получаем графический контекст Graphics g = getGraphics();
while (z)
{
// рисуем графические элементы
init(g);
// останавливаем цикл на 20 миллисекунд
try { Thread.sleep(20);
}
catch (Java.lang.InterruptedExceptlori zx.z) {};
}
}
private void init(Graphics g)
{
// белый цвет фона для перерисовки экрана
g.setColor(<strong>0</strong> xffffff);
// размер перерисовки экрана
g.fillRect(0, 0, getWidth(), getHeight());
// рисуем уровень с левого верхнего угла дисплея
1m.paint(g, 0, 0);
// двойная буферизация
flushGraphics();
}
}

Листинг 8.1 состоит из двух классов MainCanvas и MyGameCanvas, находящихся в файлах MainCanvas.java и MyGameCanvas.java. Анализ листинга начнем с класса MyGameCanvas. В первых строках кода этого класса объявляются два объекта классов TiledLayer и LayerManager, атак же логическая переменная z.

private TiledLayer fonPole;
private LayerManager lm,
boolean z;

Объект fonPole класса TiledLayer будет отвечать за фоновое изображение. Объект im класса LayerManager является менеджером уровней. Логическая переменная z необходима для прерывания цикла в методе run () и для окончания системного потока, в котором происходит работа всего игрового цикла.

В конструкторе MyGameCanvas происходит инициализация объекта fonPole класса TiledLayer и объект im класса LayerManager. Инициализированный объект fonPole добавляется менеджером уровней к текущему уровню для представления на экране телефона. Обратите внимание, объект fonPole инициализируется с помощью метода Fon ().

Image im = Image.createlmage("/fon.png");
fonPole= new TiledLayer(/*столб*/10,/*строки*/10,im,
/*ширина*/15,/*высота*/15);

В этих двух строках происходит загрузка исходного изображения из файла ресурса и создание объекта fonPole с помощью конструктора класса TiledLayer.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.