Шаг 239.
Библиотека Qt.
Смягчающие линии

    На этом шаге рассмотрим понятие смягчающих линий.

    Смягчающие линии (Easing Curves) придают особую реалистичность проводимой анимации и создают у пользователей чувство того, что в программе реализован серьезный математический движок для симуляции динамики изменения объектов. Продемонстрируем применение смягчающих линий на простом примере (рис. 1), в котором будут анимированы два окна виджетов.


Рис.1. Использование смягчающих линий

QLabel lbl1("Animated Window1");//создаем два виджета надписи
QLabel lbl2("Animated Window2");
QPropertyAnimation* panim1 =
new QPropertyAnimation(&lbl1, "geometry");/*создаем анимацию свойств,
                                            которая будет применяться к свойству
                                            виджета geometry для изменения
                                            местоположения и размеров*/ 
panim1->setDuration(3000);//присваиваем продолжительность, равную трем секундам 
panim1->setStartValue(QRect(120, 0, 100, 100));/*устанавливаем начальные значения
                                                 для изменений*/ 
panim1->setEndValue(QRect(480, 380, 200, 200));/*устанавливаем конечные значения
                                                 для изменений*/ 
panim1->setEasingCurve(QEasingCurve::InOutExpo);/*устанавливает в анимации
                                                  смягчающие линии*/ 
QPropertyAnimation* panim2 = new QPropertyAnimation(&lbl2, "pos");/*создаем анимацию
                                                  свойств, которая будет применяться
                                                  к свойству виджета pos для
                                                  изменения только местоположения*/ 
panim2->setDuration(3000);
panim2->setStartValue(QPoint(240, 0));
panim2->setEndValue(QPoint(240, 480));
panim2->setEasingCurve(QEasingCurve::OutBounce);
QParallelAnimationGroup group;/*используем параллельную группу,
                                чтобы оба окна были анимированы одновременно*/ 
group.addAnimation(panim1);//добавляем в нее анимации 
group.addAnimation(panim2);
group.setLoopCount(3);//устанавливаем количество ее исполнений равное трем  
group.start();//из группы анимаций запускаем ее на исполнение  
lbl1.show();
lbl2.show();

    Файлы приложения можно взять здесь.

    На следующем шаге рассмотрим машину состояний и переходы в Qt.




Предыдущий шаг Содержание Следующий шаг