Animation QML Type

是所有 QML 动画的基础。更多

属性

信号

方法

详细说明

动画类型不能在 QML 文件中直接使用。它的存在是为了提供一组通用属性和方法,供所有继承自它的其他动画类型使用。试图直接使用 Animation 类型将导致错误。

属性文档

alwaysRunToEnd : bool

此属性表示动画停止时是否应运行至结束。

如果该属性为 true,动画将在停止时完成其当前迭代 - 通过将running 属性设置为 false 或调用stop() 方法。complete() 方法不受此值影响。

当设置loops 属性时,这种行为最为有用,因为动画将正常播放完毕,但不会重新启动。

默认情况下,不设置 alwaysRunToEnd 属性。

注意: alwaysRunToEnd 对过渡效果中的动画没有影响。


loops : int

此属性用于设置动画的播放次数。

默认情况下,loops 为 1:动画播放一次后停止。

如果将该属性设置为 Animation.Infinite,动画将不断重复播放,直到明确停止为止--可以将running 属性设置为 false,也可以调用stop() 方法。

在下面的示例中,矩形将无限旋转。

Rectangle {
    width: 100; height: 100; color: "green"
    RotationAnimation on rotation {
        loops: Animation.Infinite
        from: 0
        to: 360
    }
}

paused : bool

该属性表示动画当前是否暂停。

可以设置paused 属性来声明控制动画是否暂停。

也可以使用pause()resume() 方法从 JavaScript 强制暂停和恢复动画。

默认情况下,动画不会暂停。


running : bool

该属性表示动画当前是否正在运行。

可以设置running 属性来声明控制动画是否正在运行。下面的示例中,只要按下MouseArea ,就会产生一个矩形的动画。

Rectangle {
    width: 100; height: 100
    NumberAnimation on x {
        running: myMouse.pressed
        from: 0; to: 100
    }
    MouseArea { id: myMouse }
}

同样,也可以读取running 属性来确定动画是否正在运行。在下面的示例中,文本项将显示动画是否正在运行。

NumberAnimation { id: myAnimation }
Text { text: myAnimation.running ? "Animation is running" : "Animation is not running" }

还可以使用start()stop() 方法从 JavaScript 强制启动和停止动画。

默认情况下,动画不会运行。不过,当使用on语法将动画作为属性值源分配给属性时,默认情况下动画会被设置为正在运行。


信号文档

finished()

该信号在动画自然结束时发出。

running 设置为false 时不会发出,当loops 属性设置为Animation.Infinite 时也不会发出。

此外,只有顶级的独立动画才会发出该信号。行为或转换中的动画或动画组中的动画不会发出该信号。

如果alwaysRunToEnd 为 true,则在动画完成当前迭代之前不会发出该信号。

注: 相应的处理程序是onFinished

另请参阅 stopped(),started() 和running


started()

该信号在动画开始时发出。

只有顶级的独立动画才会触发该信号。行为或转换中的动画或动画组中的动画不会触发该信号。

注: 相应的处理程序是onStarted


stopped()

该信号在动画结束时发出。

动画可能已手动停止,也可能已运行完成。

只有顶层的独立动画才会触发该信号。行为或转换中的动画或动画组中的动画不会触发该信号。

如果alwaysRunToEnd 为 true,则在动画完成当前迭代之前不会发出此信号。

注: 相应的处理程序是onStopped


方法文档

complete()

停止动画,跳转到最终属性值

如果动画未运行,调用此方法不会产生任何效果。调用complete() 后,running 属性将为 false。

stop() 不同,complete() 会立即快进到动画结束。在下面的示例中

Rectangle {
    NumberAnimation on x { from: 0; to: 100; duration: 500 }
}

在 250ms 时调用stop() 会使x 属性的值为 50,而调用complete() 会使x 属性的值为 100,就像动画一直在播放一样。


pause()

暂停动画

如果动画已暂停或未running ,则调用此方法不会产生任何效果。调用pause() 后,paused 属性将为 true。


restart()

重新启动动画

这是一个方便的方法,相当于调用stop() ,然后再调用start()


resume()

恢复暂停的动画

如果动画未暂停或未running ,调用此方法不会产生任何效果。调用resume() 后,paused 属性将为 false。


start()

启动动画

如果动画已在运行,调用此方法不会产生任何效果。调用start() 后,running 属性将变为 true。


stop()

停止动画

如果动画尚未运行,调用此方法不会产生任何效果。调用stop() 后,runningpaused 属性都将为 false。

通常情况下,stop() 会立即停止动画,并且动画不会对属性值产生进一步影响。在本例中,动画

Rectangle {
    NumberAnimation on x { from: 0; to: 100; duration: 500 }
}

在 250ms 时停止,则x 属性的值为 50。

但是,如果设置了alwaysRunToEnd 属性,动画将继续运行直至结束,然后停止。running 属性仍会立即变为 false。


© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.