Animator
ImportStatement:
Since:
Properties
duration : int
easing
easing.type : enumeration
easing.amplitude : real
easing.overshoot : real
easing.period : real
easing.bezierCurve : list
from : real
target : QtQuick::Item
to : real
DetailedDescription
Animator是直接在QtQuick的场景中操作的动画类型。它不像一般的动画和QML组件那样,当UI线程阻塞的时候,动画渲染线程也阻塞。这个特点可以在文字跑马灯上看得很清楚。在芯承荣治的6120板卡上,使用QPainter绘制的跑马灯,当字体大于200时,会变得很卡,而使用Animator,即使字体是全屏的,跑马灯依旧非常流畅。
这个类型的属性值,在动画运行的时候,不会发生变化。只有当动画运行完毕,其属性才会更新。我们可以像使用其它动画类型那样去使用它。
Rectangle {
}
如果ParallelAnimation和SequentialAnimation的所有子动画都是Animator。那么它们会在可能的情况下,被当成一个Animator在场景中运行。
Animator可用于过渡,但不可逆。既不能倒着播。Animator不能直接用于QML文件。它为所有继承它的组件提供共同的属性和方法。直接在QML中使用Animator将导致一个错误。
PropertyDocumentation
duration : int
动画持续的时间,毫秒级。默认值250
easing group
easing.type : enumeration
easing.amplitude : real
easing.overshoot : real
easing.period : real
easing.bezierCurve : list
用于指定动画的缓和曲线。动画从开始到结束,比如开始红色,结束绿色;又比如开始在A点,结束到B点。这个动画的过程,我们用一条曲线来描述。如红色变绿色,开始我们变得快些,后面我们变得慢些,这个变化的速度曲线,就是缓和曲线,以此类推。
如指定缓和曲线,easing.type是必须需要指定的。此外,我们还可以指定动画的振幅、周期和过冲。默认的曲线是Easing.Linear。下表详细的介绍了缓和曲线。
Easing.Linear | 速度不变,加速度为0 | ![]() |
Easing.InQuad | 从0加速,缓和曲线为t的平方(t^2) | ![]() |
Easing.OutQuad | 减速到0,缓和曲线为t的平方(t^2) | ![]() |
Easing.InOutQuad | 先加速,后减速,缓和曲线为t的平方(t^2) | ![]() |
Easing.OutInQuad | 先减速,后加速,缓和曲线为t的平方(t^2) | ![]() |
Easing.InCubic | 从0加速,缓和曲线为t的3次方(t^3) | ![]() |
Easing.OutCubic | 减速到0,缓和曲线为t的3次方(t^3) | ![]() |
Easing.InOutCubic | 先加速,后减速,缓和曲线为t的3次方(t^3) | ![]() |
Easing.OutInCubic | 先减速,后加速,缓和曲线为t的3次方(t^3) | ![]() |
Easing.InQuart | 从0加速,缓和曲线为t的4次方(t^4) | ![]() |
Easing.OutQuart | 减速到0,缓和曲线为t的4次方(t^4) | ![]() |
Easing.InOutQuart | 先加速后减速,缓和曲线为t的4次方(t^4) | ![]() |
Easing.OutInQuart | 先减速后加速,缓和曲线为t的4次方(t^4) | ![]() |
Easing.InQuint | 从0加速,缓和曲线为t的5次方(t^5) | ![]() |
Easing.OutQuint | 减速到0,缓和曲线为t的5次方(t^5) | ![]() |
Easing.InOutQuint | 先加速,后减速,缓和曲线为t的5次方(t^5) | ![]() |
Easing.OutInQuint | 先减速,后加速,缓和曲线为t的5次方(t^5) | ![]() |
Easing.InSine | 从0加速,缓和曲线为t的正弦函数(sin(t)) | ![]() |
Easing.OutSine | 减速到0,缓和曲线为t的正弦函数(sin(t)) | ![]() |
Easing.InOutSine | 先加速,后减速,缓和曲线为t的正弦函数(sin(t)) | ![]() |
Easing.OutInSine | 先减速,后加速,缓和曲线为t的正弦函数(sin(t)) | ![]() |
Easing.InExpo | 从0加速,缓和曲线为2的t次方(2^t) | ![]() |
Easing.OutExpo | 减速到0,缓和曲线为2的t次方(2^t) | ![]() |
Easing.InOutExpo | 先加速后减速,缓和曲线为2的t次方(2^t) | ![]() |
Easing.OutInExpo | 先减速后加速,缓和曲线为2的t次方(2^t) | ![]() |
Easing.InCirc | 从0加速,缓和曲线为(1-t^2)的平方根(sqrt(1-t^2)) | ![]() |
Easing.OutCirc | 减速到0,缓和曲线为(1-t^2)的平方根(sqrt(1-t^2)) | ![]() |
Easing.InOutCirc | 先加速,后减速,缓和曲线为(1-t^2)的平方根(sqrt(1-t^2)) | ![]() |
Easing.OutInCirc | 先减速,后加速,缓和曲线为(1-t^2)的平方根(sqrt(1-t^2)) | ![]() |
Easing.InElastic | 峰值衰减正弦波,峰值从0开始,可设置振幅和周期参数 | ![]() |
Easing.OutElastic | 峰值衰减正弦波,峰值衰减到0,可设置振幅和周期参数 | ![]() |
Easing.InOutElastic | 峰值衰减正弦波,峰值从0开始,半程时减少到0 | ![]() |
Easing.OutInElastic | 峰值衰减正弦波,峰值减少到半程,然后增加 | ![]() |
Easing.InBack | 从0开始过冲,缓和曲线(s+1)*t^3 - s*t^2) | ![]() |
Easing.OutBack | 减少到0的过冲,缓和曲线(s+1)*t^3 - s*t^2) | ![]() |
Easing.InOutBack | 从0开始到半程增加过冲,然后减少。缓和曲线 | ![]() |
Easing.OutInBack | 过冲减少到半程,然后增加,缓和曲线(s+1)*t^3 - s*t^2) | ![]() |
Easing.InBounce | 指数衰减型反弹曲线,从0增加 | ![]() |
Easing.OutBounce | 指数衰减型反弹曲线,减少到0 | ![]() |
Easing.InOutBounce | 指数衰减型反弹曲线,先加后减 . | ![]() |
Easing.OutInBounce | 先减后加 | ![]() |
easing.amplitude这个参数只适用于Easing.InBounce、Easing.OutBounce、Easing.InOutBounce,、Easing.OutInBounce、Easing.InElastic、Easing.OutElastic、Easing.InOutElastic、Easing.OutInElastic这8种曲线
easing.overshoot这个参数只适用于Easing.InBack、Easing.OutBack、Easing.InOutBack、Easing.OutInBack这四种曲线
easing.period这个参数只适用于Easing.InElastic、Easing.OutElastic、Easing.InOutElastic、Easing.OutInElastic这四种曲线
easing.bezierCurve这个参数只适用于Easing.Bezier曲线。这个曲线没有放到上面的列表中。它是自定义的曲线。使用本参数控制。这个参数是3个点构成的组的列表,3个点分别为控制点1,控制点2和终点。[cx1,cy1, cx2, cy2, endx, endy,...],参数里面可以有很多个组,但这个参数的终点,必须是(1,1)
可同时参阅缓冲的实例
from : real
动画的起始值。如果一个动画被定义为过渡或行为,这个值的默认值是过渡的开始状态或行为触发的属性值。
同时参阅Animation和Transitions的类型文档。
target :QtQuick::Item
动画的目标组件。注意动画的目标必须是Item组件。
to : real
动画的终点值。如果一个动画被定义为过渡或行为。这个值的默认值是过渡的终点状态或触发行为改变后的属性值。