Главная » Статьи » Игры на java

конструкор для создания игр ч2.

Как избежать "мелькания" при частой перерисовке изображения в апплете?
 В этом случае часто применяется технология "виртуального окна". Для этих целей используется класс BufferedImage, который позволяет в оперативной памяти создать "виртуальное окно", куда происходит весь вывод информации. В заданные моменты изображение должно копироваться в реальное окно. Таким образом, последовательность работы будет такова:

  • Подключаем нужный пакет
    import java.awt.image.BufferedImage;
  • В класс-апплет вводим новые переменные:
    BufferedImage image; // виртуальное окно
    Graphics imageGr; // совместимый графический контекст
  • В методе init апплета требуется создать виртуальное окно и совместимый графический контекст:
    image=new BufferedImage(width, height, 
     BufferedImage.TYPE_BYTE_INDEXED);
     imageGr=image.getGraphics();
  • Далее весь вывод производится в контекст imageGr, например,
    imageGr.setColor(Color.red);
    imageGr.fillRect(100,100,200,200);
  • В момент, когда потребуется перенести содержимое виртуального окна в реальное окно, вызывается следующая функция для контекста реального окна в методе paint апплета
    public void paint(Graphics g)
     {
     // ...
     g.drawImage(image,0,0, width, height,null);
     }
    
  • И, наконец, главный секрет - надо переопределить метод update(). На самом деле даже если вы не включали этот метод в свою программу, он там уже присутствует (неявно) - и всё, что он делает, это очистка экрана перед перерисовкой. Но мы-то заменим весь кадр целиком, поэтому очистка экранного изображения просто не нужна. И даже вредна - потому что вызовет мерцание (ведь экран сначала будет очищаться, а только затем заполняться новым кадром). А чтобы избавиться от этого, переопределим метод следующим образом:
    public void update(Graphics g){
     paint(g);
    }
    

 Практическое применение

 

Категория: Игры на java | Добавил: kuzma (15.02.2017)
Просмотров: 396 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar

Программирование игр на Python

Django - создание сайтов с нуля

Javascript - просто используем готовые решения