Анимационный движок

   
На этом шаге рассмотрим понятие анимационного движка.

   
Qt предоставляет возможности анимации пользовательского интерфейса, которые базируются на изменении свойств объектов, таких как, например, размер, позиция, цвет и т. д.

   
Новый механизм анимации позволяет использовать математические функции, называемые смягчающими линиями, которые позволяют более реалистично проводить изменения свойств объектов в заданном промежутке времени. Анимации могут группироваться друг с другом и совместно работать с машиной состояний. Анимации можно использовать для всех виджетов и элементов GraphicsView. Новая реализация базируется на классах, показанных в диаграмме рис. 1.


Рис.1. Взаимодействие классов анимационного движка

   
Класс QAbstractAnimation это базовый класс, он абстрагирует таймер и его события и имеет все основные слоты для управления анимацией, такие как start(), stop() и pause() для запуска, приостановки и останова анимации. В сигнале stateChanged() этот класс предоставляет всю информацию, когда анимация началась и когда закончилась. Этот класс наследуют три класса: первый — это QVariantAnimation, второй — QAnimationGroup и третий — QPauseAnimation. Слово Variant класса QVariantAnimation означает, что этот класс может анимировать различные типы, цвет, целые значения, а также и любой другой тип, если к нему есть интерполятор. Мы в основном будем использовать унаследованный от QVariantAnimation класс QPropertyAnimation, потому что это конкретный класс, работающий со свойствами объекта.

   
Создадим анимацию для виджета (рис. 2), которая будет изменять свойство цвета. Приведем фрагмент программы:


Рис.2. Цветовая анимация

QLabel lbl;//создаем виджет класса QLabel
lbl.setPixmap(QPixmap("happyos.png"));//устанавливаем в нем растровое изображение
QGraphicsColorizeEffect effect;//создаем объект эффекта цвета
lbl.setGraphicsEffect(&effect);//устанавливаем его в виджете надписи 
QPropertyAnimation anim(&effect, "color");/*создаем объект анимации свойств, передаем
                                            в конструкторе адрес на объект эффекта
                                            effect,а во втором параметре имя свойства
                                            color, которое хотим анимировать*/
anim.setStartValue(Qt::gray);//задаем начальное цветовое значение
anim.setKeyValueAt(0.25f, Qt::green);/*задаем ключевые значения
                                       на промежутке от 0 до 1*/
anim.setKeyValueAt(0.5f, Qt::blue);
anim.setKeyValueAt(0.75f, Qt::red);
anim.setEndValue(Qt::black);//задаем конечное цветовое значение
anim.setDuration(3000);/*задаем время продолжительности изменения значений от
                       стартового до конечного в миллисекундах (3000 мс или 3 сек.)*/
anim.setLoopCount(-1);/*устанавливаем количество исполнения цикла анимации,
                        а передача в качестве аргумента отрицательного значения,
                        устанавливает бесконечное количество раз*/
anim.start();//выполняем запуск анимации 
lbl.show();

   
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий