SmoothedAnimation QML 类型

允许一个属性平滑跟踪一个值。 更多信息...

导入语句import QtQuick
继承

NumberAnimation

属性

详细描述

SmoothedAnimation 通过使用缓动曲线将属性值平滑地动画化到设定的目标值。当目标值发生变化时,用于在旧值和新值之间动画的缓动曲线将平滑拼接在一起,以生成一个新的目标值平滑运动,同时保持当前速度。

以下示例展示了如何使用 SmoothedAnimation 跟踪另一个矩形的定位。绿色矩形的 x 和 y 值绑定到红色矩形的相应值。每当这些值发生变化时,绿色矩形将平滑地动画化到新位置

import QtQuick

Rectangle {
    width: 800; height: 600
    color: "blue"

    Rectangle {
        width: 60; height: 60
        x: rect1.x - 5; y: rect1.y - 5
        color: "green"

        Behavior on x { SmoothedAnimation { velocity: 200 } }
        Behavior on y { SmoothedAnimation { velocity: 200 } }
    }

    Rectangle {
        id: rect1
        width: 50; height: 50
        color: "red"
    }

    focus: true
    Keys.onRightPressed: rect1.x = rect1.x + 100
    Keys.onLeftPressed: rect1.x = rect1.x - 100
    Keys.onUpPressed: rect1.y = rect1.y - 100
    Keys.onDownPressed: rect1.y = rect1.y + 100
}

SmoothedAnimation 可以通过设置动画应发生的速度或动画应持续的时间进行配置。如果都指定了速度和时间,则对于每个目标值的变化,都会选择导致最快动画的速度或时间。

例如,设置速度为 200 时,从 0 到 800 的动画将花费 4 秒钟;设置持续时间為 8000 时将花费 8 秒钟;同时设置速度为 200 和持续时间为 8000 时将花费 4 秒钟。设置速度为 200 时,从 0 到 20000 的动画将花费 10 秒钟;设置为持续时间為 8000 时将花费 8 秒钟;同时设置速度为 200 和持续时间为 8000 时将花费 8 秒钟。

SmoothedAnimation 的默认速度为每秒 200 单位。注意,如果动画值范围的跨度较小,则需要适当地调整速度。例如,项目的不透明度范围是 0 到 1.0。为了在此范围内启用平滑动画,速度需要设置为 0.5 单位/秒等值。使用 0.5 单位/秒的速度从 0 到 1.0 动画将花费 2000 毫秒来完成。

与其他动画类型一样,平滑动画可以通过多种方式应用,包括过渡、行为和属性值来源。《Qt Quick中的动画和过渡》文档展示了创建动画的各种方法。

另请参阅SpringAnimationNumberAnimation、《Qt Quick中的动画和过渡》和《Qt Quick示例 - 动画》。

属性文档

duration : int

该属性保存动画持续时长(以毫秒为单位),用于追踪来源。

将该值设置为-1(默认值)将禁用持续时间值。

如果速度值和持续时间值都启用,则动画将使用较短的时间。


maximumEasingTime : int

该属性指定在跟踪期间任何“缓和”操作应持续最长时间,以毫秒为单位。设置此属性会使速度在一段时间后“平稳”。

默认值是-1。


reversingMode : enumeration

设置当动画方向反转时,SmoothedAnimation的行为。

可能的值包括:

恒定

描述

SmoothedAnimation.Eased

(默认) 动画将平滑减速,然后反向

SmoothedAnimation.Immediate

动画将立即开始以0速度反向加速

SmoothedAnimation.Sync

属性将立即设置为目标值

velocity : real

该属性保存追踪’to’值时的允许的平均速度。

SmoothedAnimation的默认速度是200单位/秒。

将该值设置为-1将禁用速度值。

如果速度值和持续时间值都启用,则动画将使用较短的时间。


© 2024 Qt公司。本文档中的文档贡献归其各自所有者所有。本文档提供的内容根据Free Software Foundation发布并由其发布的《GNU自由文档许可证版本1.3》的条款发行。