Продолжение цикла статей по программированию игр под Java 2 ME. Здесь рассказывается об использовании класса TiledLayer. Мы будем использовать его для рисования фона.
Сейчас мы добавим немного красок в нашу игру
Мы сделаем фон, состоящий из трех цветов, символизирующих Россию – белый, синий и красный. Нам нужно будет поделить экран на три части и заполнить их картинками с размерами 60×60 пикселя. Благодаря классу TiledLayer можно закрасить большую область маленькими картинками.
Для начала разделим экран на квадратики по 60 на 60 пикселя каждый. Номер каждой колонки и строчки отсчитывается с 0, как показано на рисунке:

Ячейки с (0, 0) по (0, 2) закрасим белым, (1, 0) – (1, 2) – синим, (2, 0) – (2, 2) – красным. Для этого нужно приготовить картинку:

Как видите, первый квадрат – белый, второй – красный, а третий – синий. В классе TiledLayer эти изображения будут нумероваться начиная с 1 (а не с 0, значит белый – 1, красный – 2, синий – 3). TiledLayer возьмет полную картинку и разделит ее на три части. Нам нужен фон с девятью ячейками: 3 на 3, по 60х60 пикселей каждая. Следующий код делает то, что нам надо:
1 2 3 4 | // Загружаем картинку с фонами Image bgImg = Image.createImage("/bg.png"); // Создаем TiledLayer bg = new TiledLayer(3, 3, bgImg, 60, 60); |
Как видите, первые два параметра конструктора указывают размеры фона, следующий – картника, а последние два – размеры каждой ячейки. Этот размер будет использоваться для того, чтобы вырезать ячейки из исходного изображения bgImg.
Все, что нам осталось сделать – это присвоить каждой ячейке соответствующую картинку. Код, приведенный ниже как раз эти и занимается:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private void createBg() throws IOException { int[] cells = { 1, 1, 1, 3, 3, 3, 2, 2, 2 }; for (int i = 0; i < cells.length; i++) { int column = i % 3; int row = (i - column) / 3; bg.setCell(column, row, cells[i]); } // устанавливаем место размещения фона bg.setPosition(0, 0); } |
И не забудьте добавить в процедуру обновления экрана отрисовку фона перед тем, как рисовать все остальное:
bg.paint(getGraphics());

http://javabegin.ru/