Spec-Zone.ru › Qt 5.11

Тип QML PropertyAnimation

Анимирует изменения значений свойств. Подробнее...

Заявление об импорте: import QtQuick 2.11
Наследует:

Animation

Наследует от:

ColorAnimation, NumberAnimation, RotationAnimation и Vector3dAnimation

  • Список всех членов, включая унаследованные

Свойства

  • duration : int
  • easing
    • easing.type : перечисление
    • easing.amplitude : вещественное число
    • easing.overshoot : вещественное число
    • easing.period : вещественное число
    • easing.bezierCurve : список<вещественное число>
  • exclude : список<Объект>
  • from : переменная
  • properties : строка
  • property : строка
  • target : Объект
  • targets : список<Объект>
  • to : переменная

Подробное описание

PropertyAnimation предоставляет способ анимирования изменений значения свойства.

Его можно использовать для определения анимаций различными способами:

  • В Переходе

    Например, для анимирования любых объектов, которые изменили свойства x или y в результате изменения состояния, используя кривую сглаживания InOutQuad:

    Rectangle {
        id: rect
        width: 100; height: 100
        color: "red"
    
        states: State {
            name: "moved"
            PropertyChanges { target: rect; x: 50 }
        }
    
        transitions: Transition {
            PropertyAnimation { properties: "x,y"; easing.type: Easing.InOutQuad }
        }
    }
  • В Поведении

    Например, для анимирования всех изменений свойства x прямоугольника:

    Rectangle {
        width: 100; height: 100
        color: "red"
    
        Behavior on x { PropertyAnimation {} }
    
        MouseArea { anchors.fill: parent; onClicked: parent.x = 50 }
    }
  • В качестве источника значения свойства

    Например, для многократной анимации свойства x прямоугольника:

    Rectangle {
        width: 100; height: 100
        color: "red"
    
        SequentialAnimation on x {
            loops: Animation.Infinite
            PropertyAnimation { to: 50 }
            PropertyAnimation { to: 0 }
        }
    }
  • В обработчике сигнала

    Например, для плавного исчезновения theObject при нажатии:

    MouseArea {
        anchors.fill: theObject
        onClicked: PropertyAnimation { target: theObject; property: "opacity"; to: 0 }
    }
  • Самостоятельно

    Например, для анимирования свойства rect width ширины в течение 500 мс, от текущей ширины до 30:

    Rectangle {
        id: theRect
        width: 100; height: 100
        color: "red"
    
        // this is a standalone animation, it's not running by default
        PropertyAnimation { id: animation;
                            target: theRect;
                            property: "width";
                            to: 30;
                            duration: 500 }
    
        MouseArea { anchors.fill: parent; onClicked: animation.running = true }
    }

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

Обратите внимание, что PropertyAnimation наследует абстрактный тип Animation. Это включает дополнительные свойства и методы для управления анимацией.

См. также Анимация и переходы в Qt Quick и Примеры Qt Quick — Анимация.

Документация по свойствам

duration : int

Это свойство содержит длительность анимации в миллисекундах.

Значение по умолчанию равно 250.

easing.type : перечисление

Указывает кривую сглаживания, используемую для анимации.

Для указания кривой сглаживания необходимо указать, по крайней мере, тип. Для некоторых кривых можно также указать амплитуду, период и/или перескок (подробнее приведено после таблицы). Кривая сглаживания по умолчанию — Easing.Linear.

PropertyAnimation { properties: "y";
                    easing.type: Easing.InOutElastic;
                    easing.amplitude: 2.0;
                    easing.period: 1.5 }

Доступные типы:

Easing.Linear Кривая сглаживания для линейной (t) функции: скорость постоянна.
Easing.InQuad Кривая сглаживания для квадратной (t^2) функции: ускорение от нулевой скорости.
Easing.OutQuad Кривая сглаживания для квадратной (t^2) функции: замедление до нулевой скорости.
Easing.InOutQuad Кривая сглаживания для квадратной (t^2) функции: ускорение до середины, затем замедление.
Easing.OutInQuad Кривая сглаживания для квадратной (t^2) функции: замедление до середины, затем ускорение.
Easing.InCubic Кривая сглаживания для кубической (t^3) функции: ускорение от нулевой скорости.
Easing.OutCubic Кривая сглаживания для кубической (t^3) функции: замедление до нулевой скорости.
Easing.InOutCubic Кривая сглаживания для кубической (t^3) функции: ускорение до середины, затем замедление.
Easing.OutInCubic Кривая сглаживания для кубической (t^3) функции: замедление до середины, затем ускорение.
Easing.InQuart Кривая сглаживания для четвёртой степени (t^4) функции: ускорение от нулевой скорости.
Easing.OutQuart Кривая сглаживания для четвёртой степени (t^4) функции: замедление до нулевой скорости.
Easing.InOutQuart Кривая сглаживания для четвёртой степени (t^4) функции: ускорение до середины, затем замедление.
Easing.OutInQuart Кривая сглаживания для четвёртой степени (t^4) функции: замедление до середины, затем ускорение.
Easing.InQuint Кривая сглаживания для пятой степени (t^5) функции: ускорение от нулевой скорости.
Easing.OutQuint Кривая сглаживания для пятой степени (t^5) функции: замедление до нулевой скорости.
Easing.InOutQuint Кривая сглаживания для пятой степени (t^5) функции: ускорение до середины, затем замедление.
Easing.OutInQuint Кривая сглаживания для пятой степени (t^5) функции: замедление до середины, затем ускорение.
Easing.InSine Кривая сглаживания для синусоидальной (sin(t)) функции: ускорение от нулевой скорости.
Easing.OutSine Кривая сглаживания для синусоидальной (sin(t)) функции: замедление до нулевой скорости.
Easing.InOutSine Кривая сглаживания для синусоидальной (sin(t)) функции: ускорение до середины, затем замедление.
Easing.OutInSine Кривая сглаживания для синусоидальной (sin(t)) функции: замедление до середины, затем ускорение.
Easing.InExpo Кривая сглаживания для экспоненциальной (2^t) функции: ускорение от нулевой скорости.
Easing.OutExpo Кривая сглаживания для экспоненциальной (2^t) функции: замедление до нулевой скорости.
Easing.InOutExpo Кривая сглаживания для экспоненциальной (2^t) функции: ускорение до середины, затем замедление.
Easing.OutInExpo Кривая сглаживания для экспоненциальной (2^t) функции: замедление до середины, затем ускорение.
Easing.InCirc Кривая сглаживания для круговой (sqrt(1-t^2)) функции: ускорение от нулевой скорости.
Easing.OutCirc Кривая сглаживания для круговой (sqrt(1-t^2)) функции: замедление до нулевой скорости.
Easing.InOutCirc Кривая сглаживания для круговой (sqrt(1-t^2)) функции: ускорение до середины, затем замедление.
Easing.OutInCirc Кривая сглаживания для круговой (sqrt(1-t^2)) функции: замедление до середины, затем ускорение.
Easing.InElastic Кривая сглаживания для упругой (экспоненциально убывающая синусоидальная волна) функции: ускорение от нулевой скорости. Пиковая амплитуда может быть установлена с помощью параметра amplitude, а период затухания — с помощью параметра period.
Easing.OutElastic Кривая сглаживания для упругой (экспоненциально убывающая синусоидальная волна) функции: замедление до нулевой скорости. Пиковая амплитуда может быть установлена с помощью параметра amplitude, а период затухания — с помощью параметра period.
Easing.InOutElastic Кривая сглаживания для упругой (экспоненциально убывающая синусоидальная волна) функции: ускорение до середины, затем замедление.
Easing.OutInElastic Кривая сглаживания для упругой (экспоненциально убывающая синусоидальная волна) функции: замедление до середины, затем ускорение.
Easing.InBack Кривая сглаживания для обратной (перескок кубической функции: (s+1)*t^3 - s*t^2) входящей: ускорение от нулевой скорости.
Easing.OutBack Кривая сглаживания для обратной (перескок кубической функции: (s+1)*t^3 - s*t^2) выходящей: замедление до нулевой скорости.
Easing.InOutBack Кривая сглаживания для обратной (перескок кубической функции: (s+1)*t^3 - s*t^2) входящей/выходящей: ускорение до середины, затем замедление.
Easing.OutInBack Кривая сглаживания для обратной (перескок кубической функции: (s+1)*t^3 - s*t^2) выходящей/входящей: замедление до середины, затем ускорение.
Easing.InBounce Кривая сглаживания для отскока (экспоненциально убывающий параболический отскок) функции: ускорение от нулевой скорости.
Easing.OutBounce Кривая сглаживания для отскока (экспоненциально убывающий параболический отскок) функции: замедление до нулевой скорости.
Easing.InOutBounce Кривая сглаживания для отскока (экспоненциально убывающий параболический отскок) функции входящей/выходящей: ускорение до середины, затем замедление.
Easing.OutInBounce Кривая сглаживания для отскока (экспоненциально убывающий параболический отскок) функции выходящей/входящей: замедление до середины, затем ускорение.
Easing.Bezier Пользовательская кривая сглаживания, определенная свойством easing.bezierCurve.

easing.amplitude применима только для кривых отскока и упругих кривых (кривые типа Easing.InBounce, Easing.OutBounce, Easing.InOutBounce, Easing.OutInBounce, Easing.InElastic, Easing.OutElastic, Easing.InOutElastic или Easing.OutInElastic).

easing.overshoot применима только если easing.type равна: Easing.InBack, Easing.OutBack, Easing.InOutBack или Easing.OutInBack.

easing.period применима только если easing.type равна: Easing.InElastic, Easing.OutElastic, Easing.InOutElastic или Easing.OutInElastic.

easing.bezierCurve применима только если easing.type равна: Easing.Bezier. Это свойство представляет собой список<вещественное число>, содержащий группы из трёх точек, определяющих кривую от 0,0 до 1,1 - контрольная точка 1, контрольная точка 2, конечная точка: [cx1, cy1, cx2, cy2, endx, endy, ...]. Последняя точка должна быть 1,1.

См. Кривые сглаживания для демонстрации различных настроек сглаживания.

exclude : список<Объект>

Это свойство содержит элементы, на которые не должно влиять данное анимационное действие.

См. также PropertyAnimation::targets.

from : variant

Это свойство содержит начальное значение для анимации.

Если PropertyAnimation определено внутри Transition или Behavior, это значение по умолчанию устанавливается в значение, определенное в начальном состоянии Transition, или текущее значение свойства в момент запуска Behavior.

См. также Анимация и переходы в Qt Quick.

properties : строка

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

NumberAnimation { target: theItem; property: "x"; to: 500 }

имеет такое же значение, как

NumberAnimation { targets: theItem; properties: "x"; to: 500 }

Единичные формы немного оптимизированы, поэтому если вам нужно анимировать только один объект/свойство, следует использовать их.

Свойство targets позволяет задать несколько объектов-мишеней. Например, это анимирует свойство x как для itemA, так и для itemB:

NumberAnimation { targets: [itemA, itemB]; properties: "x"; to: 500 }

Во многих случаях эти свойства не нужно явно указывать, так как они могут быть выведены из фреймворка анимации:

Источник значения / Поведение При использовании анимации в качестве источника значения или в поведении, целевой объект и имя анимируемого свойства по умолчанию могут быть выведены.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    NumberAnimation on x { to: 500; loops: Animation.Infinite } //animate theRect's x property
    Behavior on y { NumberAnimation {} } //animate theRect's y property
}
Переход При использовании в переходе анимация свойства предполагается соответствовать всем целевым объектам, но ни одному свойству. На практике это означает, что вам нужно указать хотя бы свойства, чтобы анимация имела эффект.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    Item { id: uselessItem }
    states: State {
        name: "state1"
        PropertyChanges { target: theRect; x: 200; y: 200; z: 4 }
        PropertyChanges { target: uselessItem; x: 10; y: 10; z: 2 }
    }
    transitions: Transition {
        //animate both theRect's and uselessItem's x and y to their final values
        NumberAnimation { properties: "x,y" }

        //animate theRect's z to its final value
        NumberAnimation { target: theRect; property: "z" }
    }
}
Автономно Когда анимация используется автономно, как целевой объект, так и свойство должны быть явно указаны.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    //need to explicitly specify target and property
    NumberAnimation { id: theAnim; target: theRect; property: "x"; to: 500 }
    MouseArea {
        anchors.fill: parent
        onClicked: theAnim.start()
    }
}

Как видно из приведенного выше примера, свойства задаются как список свойств через запятую, которые нужно анимировать.

См. также exclude и Анимация и переходы в Qt Quick.

property : string

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

NumberAnimation { target: theItem; property: "x"; to: 500 }

имеет тот же смысл, что и

NumberAnimation { targets: theItem; properties: "x"; to: 500 }

Единичные формы немного оптимизированы, поэтому если вам нужно анимировать только один объект/свойство, следует использовать их.

Свойство targets позволяет задавать несколько целевых объектов. Например, это анимирует свойство x как для itemA, так и для itemB:

NumberAnimation { targets: [itemA, itemB]; properties: "x"; to: 500 }

Во многих случаях эти свойства не нужно явно указывать, так как они могут быть выведены из фреймворка анимации:

Источник значения / Поведение При использовании анимации в качестве источника значения или в поведении, целевой объект и имя анимируемого свойства по умолчанию могут быть выведены.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    NumberAnimation on x { to: 500; loops: Animation.Infinite } //animate theRect's x property
    Behavior on y { NumberAnimation {} } //animate theRect's y property
}
Переход При использовании в переходе анимация свойства предполагается соответствовать всем целевым объектам, но ни одному свойству. На практике это означает, что вам нужно указать хотя бы свойства, чтобы анимация имела эффект.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    Item { id: uselessItem }
    states: State {
        name: "state1"
        PropertyChanges { target: theRect; x: 200; y: 200; z: 4 }
        PropertyChanges { target: uselessItem; x: 10; y: 10; z: 2 }
    }
    transitions: Transition {
        //animate both theRect's and uselessItem's x and y to their final values
        NumberAnimation { properties: "x,y" }

        //animate theRect's z to its final value
        NumberAnimation { target: theRect; property: "z" }
    }
}
Автономно Когда анимация используется автономно, как целевой объект, так и свойство должны быть явно указаны.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    //need to explicitly specify target and property
    NumberAnimation { id: theAnim; target: theRect; property: "x"; to: 500 }
    MouseArea {
        anchors.fill: parent
        onClicked: theAnim.start()
    }
}

Как видно из приведенного выше примера, свойства задаются как список свойств через запятую, которые нужно анимировать.

См. также exclude и Анимация и переходы в Qt Quick.

target : Object

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

NumberAnimation { target: theItem; property: "x"; to: 500 }

имеет тот же смысл, что и

NumberAnimation { targets: theItem; properties: "x"; to: 500 }

Единичные формы немного оптимизированы, поэтому если вам нужно анимировать только один объект/свойство, следует использовать их.

Свойство targets позволяет задавать несколько целевых объектов. Например, это анимирует свойство x как для itemA, так и для itemB:

NumberAnimation { targets: [itemA, itemB]; properties: "x"; to: 500 }

Во многих случаях эти свойства не нужно явно указывать, так как они могут быть выведены из фреймворка анимации:

Источник значения / Поведение При использовании анимации в качестве источника значения или в поведении, целевой объект и имя анимируемого свойства по умолчанию могут быть выведены.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    NumberAnimation on x { to: 500; loops: Animation.Infinite } //animate theRect's x property
    Behavior on y { NumberAnimation {} } //animate theRect's y property
}
Переход При использовании в переходе анимация свойства предполагается соответствовать всем целевым объектам, но ни одному свойству. На практике это означает, что вам нужно указать хотя бы свойства, чтобы анимация имела эффект.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    Item { id: uselessItem }
    states: State {
        name: "state1"
        PropertyChanges { target: theRect; x: 200; y: 200; z: 4 }
        PropertyChanges { target: uselessItem; x: 10; y: 10; z: 2 }
    }
    transitions: Transition {
        //animate both theRect's and uselessItem's x and y to their final values
        NumberAnimation { properties: "x,y" }

        //animate theRect's z to its final value
        NumberAnimation { target: theRect; property: "z" }
    }
}
Автономно Когда анимация используется автономно, как целевой объект, так и свойство должны быть явно указаны.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    //need to explicitly specify target and property
    NumberAnimation { id: theAnim; target: theRect; property: "x"; to: 500 }
    MouseArea {
        anchors.fill: parent
        onClicked: theAnim.start()
    }
}

Как видно из приведенного выше примера, свойства задаются как список свойств через запятую, которые нужно анимировать.

См. также exclude и Анимация и переходы в Qt Quick.

targets : list<Object>

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

NumberAnimation { target: theItem; property: "x"; to: 500 }

имеет тот же смысл, что и

NumberAnimation { targets: theItem; properties: "x"; to: 500 }

Единичные формы немного оптимизированы, поэтому если вам нужно анимировать только один объект/свойство, следует использовать их.

Свойство targets позволяет задавать несколько целевых объектов. Например, это анимирует свойство x как для itemA, так и для itemB:

NumberAnimation { targets: [itemA, itemB]; properties: "x"; to: 500 }

Во многих случаях эти свойства не нужно явно указывать, так как они могут быть выведены из фреймворка анимации:

Источник значения / Поведение При использовании анимации в качестве источника значения или в поведении, целевой объект и имя анимируемого свойства по умолчанию могут быть выведены.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    NumberAnimation on x { to: 500; loops: Animation.Infinite } //animate theRect's x property
    Behavior on y { NumberAnimation {} } //animate theRect's y property
}
Переход При использовании в переходе анимация свойства предполагается соответствовать всем целевым объектам, но ни одному свойству. На практике это означает, что вам нужно указать хотя бы свойства, чтобы анимация имела эффект.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    Item { id: uselessItem }
    states: State {
        name: "state1"
        PropertyChanges { target: theRect; x: 200; y: 200; z: 4 }
        PropertyChanges { target: uselessItem; x: 10; y: 10; z: 2 }
    }
    transitions: Transition {
        //animate both theRect's and uselessItem's x and y to their final values
        NumberAnimation { properties: "x,y" }

        //animate theRect's z to its final value
        NumberAnimation { target: theRect; property: "z" }
    }
}
Автономно Когда анимация используется автономно, как целевой объект, так и свойство должны быть явно указаны.
Rectangle {
    id: theRect
    width: 100; height: 100
    color: Qt.rgba(0,0,1)
    //need to explicitly specify target and property
    NumberAnimation { id: theAnim; target: theRect; property: "x"; to: 500 }
    MouseArea {
        anchors.fill: parent
        onClicked: theAnim.start()
    }
}

Как видно из приведенного выше примера, свойства задаются как список свойств через запятую, которые нужно анимировать.

См. также exclude и Анимация и переходы в Qt Quick.

to : variant

Это свойство содержит конечное значение для анимации.

Если PropertyAnimation определен в Переходе или Поведении, это значение по умолчанию соответствует значению, определенному в конечном состоянии Перехода, или значению изменения свойства, которое вызвало Поведение.

См. также Анимация и переходы в Qt Quick.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qml-qtquick-propertyanimation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API