Гиф обои

6. Создаем Engine

Теперь давайте работать над . Создайте класс GIFWallpaperEngine внутри класса , который будет наследовать .

В этом классе добавим следующие поля:

: целое число, указывающее длину задержки между перерисовкой анимации. Значение 20, дает нам 50 фреймов в секунду. : логическая переменная, которая дает программе знать, когда  именно обои видны на дисплее

Это важно, потому что нам не нужно отрисовывать обои, когда их не видно. : это анимированный GIFв форме объекта

: это отсылка к объекту  доступному в программе. Он будет инициирован с помощью описания метода . : это объект , который будет использоваться для запуска, который отвечает за отрисовку обоев.

Ваш класс должен выглядеть таким образом:

Теперь создадим метод под названием , который будет отрисовывать содержимое gif файла. Давайте распишем этот метод:

  • Сначала мы проверяем переменную на условие . Если это так, то мы продолжаем.
  • Используем комманду из метода для создания холста — , на котором будет отрисовываться наша анимация.
  • Рисуем кадра GIF анимации на , после масштабирования и позиционирования.
  • После того, как отрисовка завершена, передаем   назад в .
  • Обновляем текущий кадр GIF анимации, используя метод объекта .
  • Вызываем метод снова используя после ожидания в миллисекундах.

Метод никогда не будет вызываться непосредственно. Он всегда вызывается через использование объектов и . Поэтому, двайте создадим объект и назавем его .

Добавьте в класс следующий код:

Метод автоматически вызывается, каждый раз когда будет меняться состояние обоев. Мы должны переписать его, что бы на основе значения аргумента , запускать или останавливать . Метод объекта будет использоваться для остановки запущенных обоев .

И наконец, пререпишем метод для  , который будет останавливать запуск , если обои деактивированы.

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий