C

属性动画 QML 类型

动画化属性值的变化。 更多信息...

导入语句import QtQuick
Qt Quick Ultralite 1.0
继承自

Animation

被以下所继承

ColorAnimationNumberAnimationRotationAnimation

属性

详细描述

PropertyAnimation 提供了动画化属性值变化的途径。

它可以以多种方式定义动画

  • Transition

    例如,使用 InOutQuad 缓动曲线动画化任何因状态改变而改变其 xy 属性的对象

    Item {
        id: root
    
        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 }
        }
    }
  • Behavior

    例如,动画化矩形的所有 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 }
        }
    }
  • 独立使用

    例如,动画化矩形的 width 属性 500ms,从当前宽度到 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 }
    }

根据动画的使用方式,通常使用的属性集会有所不同。有关更多信息,请参阅个别属性文档以及 动画和转换 简介。

请注意,PropertyAnimation 继承了抽象的 Animation 类型。这包括控制动画的额外属性和方法。

参见 动画和转换.

属性文档

properties : string

property : string

目标 : 对象

这些属性用作一组来确定应该动画化哪些属性。单数和复数形式在功能上相同,例如

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

与下面具有相同的意义

NumberAnimation {
    targets theItem;
    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 {
            theRect {
                x: 200
                y: 200
                z: 4
            }
        }
        PropertyChanges {
            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()
    }
}

如上述示例所示,属性指定为要动画化的属性名称的逗号分隔字符串。

参见 动画和转换.


duration : int

该属性包含动画的持续时间,单位为毫秒。

默认值是250。


缓和组

easing.bezierCurve : 列表<real>

easing.type : 枚举

指定动画使用的缓和曲线

要指定缓和曲线,至少需要指定类型。默认缓和曲线是 Easing.Linear

PropertyAnimation { properties: "y";
                    easing.type: Easing.InOutSine;
                  }

可用类型包括

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)函数的缓动曲线:减速直到 halfway,然后加速。
Easing.InCirc圆形(sqrt(1-t^2))函数的缓动曲线:从零速度开始加速。
Easing.OutCirc圆形(sqrt(1-t^2))函数的缓动曲线:减速到零速度。
Easing.InOutCirc圆形(sqrt(1-t^2))函数的缓动曲线:加速直到 halfway,然后减速。
Easing.OutInCirc圆形(sqrt(1-t^2))函数的缓动曲线:减速直到 halfway,然后加速。
Easing.InElastic弹性(指数衰减正弦波)函数的缓动曲线:从零速度开始加速。它使用默认值,峰值振幅(1.0)和衰减周期(0.3)。
Easing.OutElastic弹性(指数衰减正弦波)函数的缓动曲线:减速到零速度。它使用默认值,峰值振幅(1.0)和衰减周期(0.3)。
Easing.InOutElastic弹性(指数衰减正弦波)函数的缓动曲线:加速直到 halfway,然后减速。
Easing.OutInElastic弹性(指数衰减正弦波)函数的缓动曲线:减速直到 halfway,然后加速。
Easing.InBack后(超出三次函数:s*t^3 - s*t^2)缓动进入:从零速度开始加速。它使用默认值超出量(s: 1.70158)。
Easing.OutBack后(超出三次函数:s*t^3 - s*t^2)缓动退出:减速到零速度。它使用默认值超出量(s: 1.70158)。
Easing.InOutBack后(超出三次函数:s*t^3 - s*t^2)缓动进出:加速直到 halfway,然后减速。它使用默认值超出量(s: 1.70158)。
Easing.OutInBack后(超出三次缓动:s*t^3 - s*t^2)缓动出/入:减速直到 halfway,然后加速。它使用默认值超出量(s: 1.70158)。
Easing.InBounce弹跳(指数衰减抛物线弹跳)函数的缓动曲线:从零速度开始加速。
Easing.OutBounce弹跳(指数衰减抛物线弹跳)函数的缓动曲线:从零速度开始减速。
Easing.InOutBounce弹跳(指数衰减抛物线弹跳)函数缓动进出:加速直到 halfway,然后减速。
Easing.OutInBounce弹跳(指数衰减抛物线弹跳)函数缓动出/入:减速直到 halfway,然后加速。
Easing.BezierSpline由 easing.bezierCurve 属性定义的自定义缓动曲线。

easing.bezierCurve 仅当 easing.type 是: Easing.BezierSpline 时适用。此属性是一个包含定义从 0,0 到 1,1 的曲线的三点组列表 <real> - 控制点1,控制点2,终点:[cx1, cy1, cx2, cy2, endx, endy, ...]。最后一个点必须是 1,1。

注意: 如果您设置了 easing.bezierCurve 但未指定 easing.type,则 qmltocpp 工具 将生成隐式地将 easing.type 设置为 Easing.BezierSpline 的代码。


from : variant

此属性保存动画的起始值。

如果 PropertyAnimation 在一个 TransitionBehavior 中定义,则此值默认为 Transition 的初始状态中定义的值,或 Behavior 触发时的属性当前值。

参见 动画和转换.


to : variant

此属性保存动画的结束值。

如果在属性动画被定义在一个过渡行为中,此值默认为过渡的结束状态中定义的值,或者触发行为的属性更改的值。

参见 动画和转换.


在特定Qt许可证下可用。
了解更多。