Создание игр для мобильных телефонов. Майкл Моррисон
Чтение книги онлайн.

Читать онлайн книгу Создание игр для мобильных телефонов - Майкл Моррисон страница 31

СКАЧАТЬ style="font-size:15px;">      Теперь у вас есть представление о MIDP-графике и, вероятно, вам не терпится посмотреть, как это все работает в контексте мидлета. Вы узнали, что графика обрабатывается методом paint(). Однако класс мидлета не содержит этого метода, поэтому для выполнения операций с графикой вы должны использовать класс Canvas. Класс Canvas представляет собой абстрактную поверхность и должен быть включен в класс мидлета. Графические операции выполняются с помощью класса Graphics. Класс, производный от Canvas, можно использовать для вывода изображений на экран.

      Чтобы начать работу над графическим мидлетом, вы должны выполнить следующее:

      1. создать класс, производный от Canvas и ассоциированный с мидлетом;

      2. создать объект класса Canvas как член-переменную класса мидлета;

      3. установить объект класса Canvas как текущий экран мидлета, для чего вызвать метод setCurrent().

      Самый лучший способ понять этот процесс – создать пример программы. Хороший пример простой программы с MIDP-графикой – программа, рисующая олимпийский символ, состоящий из пяти пересекающихся колец.

      Написание программного кода

      Давайте начнем с класса OCanvas, который создаст холст для использования в мидлете Olympics. Код класса OCanvas приведен в листинге 4.1.

Листинг 4.1. Класс OCanvas служит настраиваемым холстом для мидлета Olympics

      import javax.microedition.lcdui.*;

      public class OCanvas extends Canvas {

      private Display display;

      public OCanvas(Display d) {

      super();

      display = d;

      }

      void start() {

      display.setCurrent(this);

      repaint();

      }

      public void paint(Graphics g) {

      // Clear the display

      g.setColor(255, 255, 255); // White

      g.fillRect(0, 0, getWidth(), getHeight());

      // Draw the first row of circles //Дуги выводятся как идеальные окружности, если задать одинаковые значения высоты и ширины, а также изменение угла от 0° до 360°

      g.setColor(0, 0, 255); // Blue

      g.drawArc(5, 5, 25, 25, 0, 360);

      g.setColor(0, 0, 0); // Black

      g.drawArc(35, 5, 25, 25, 0, 360);

      g.setColor(255, 0, 0); // Red

      g.drawArc(65, 5, 25, 25, 0, 360);

      // Draw the second row of circles

      g.setColor(255, 255, 0); // Yellow

      g.drawArc(20, 20, 25, 25, 0, 360);

      g.setColor(0, 255, 0); // Green

      g.drawArc(50, 20, 25, 25, 0, 360);

      }

      }

      Этот класс расширяет класс Canvas и устанавливает себя как экран мидлета. Конструктор вызывает конструктор родительского класса Canvas и инициализирует переменную display. Метод start() устанавливает холст текущим экраном мидлета и обновляет изображение. Наиболее важный код содержится в методе paint(), он вызывает функции setColor() и drawArc() и рисует олимпийский символ. Обратите внимание, что все аргументы углов в функциях drawArc() равны 0 0 и 360°, в результате чего будут нарисованы полные эллипсы.

      Когда вы определили класс OCanvas, можно объявить член-переменную класса мидлета OlympicsMIDlet:

      private OCanvas canvas;

      Член-переменная класса должна быть инициализирована конструктором класса:

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

      Это весь код для обработки графики, который необходим в мидлете Olympics. В листинге 4.2 представлен полный код класса OlympicsMIDlet.

Листинг 4.2. Код класса OlympicsMIDlet содержится в файле OlympicsMIDlet.java

      import СКАЧАТЬ