动画 QML 类型

是所有 QML 动画的基类。更多...

属性

信号

方法

详细描述

Animation 类型不能直接在 QML 文件中使用。它存在是为了提供一组常用属性和方法,所有从它继承的动画类型都可用。直接尝试使用 Animation 类型将会引发错误。

属性文档

alwaysRunToEnd : bool

此属性表示当动画停止时,是否应该运行到完成。

如果此属性为真,动画将在停止时完成当前迭代 - 要停止,可以设置 running 属性为 false 或调用 stop() 方法。此值不会影响 complete() 方法。

loops 属性已设置时,此行为最为有用,因为动画将正常播放,但不会重启。

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

注意:alwaysRunToEnd 对 Transition 中的动画没有影响。


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属性可以被设置为声明性地控制动画是否暂停。

动画也可以通过JavaScript使用pause()resume()方法从命令行暂停和恢复。

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


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()方法从命令行启动和停止。

默认情况下,动画没有被运行。但是,当将动画作为属性值源分配给属性时,使用on语法,它们默认设置为正在运行。


信号文档

finished()

当动画自然完成时,会发出此信号。

running设置为false时,或者对于loops属性设置为Animation.Infinite的动画,皆不会发出信号。

此外,它只会针对顶级、独立的动画发出。它将不会在Behavior或Transition中的动画,或者动画组中的动画上发出。

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

注意:对应的事件处理函数为onFinished

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


started()

当动画开始时,会发出此信号。

它只会触发顶级、独立的动画。它将不会触发在Behavior或Transition中的动画,或者是动画组中的一部分的动画。

注意:对应的事件处理函数为onStarted


stopped()

当动画结束时,会发出此信号。

动画可能已被手动停止,或者可能已运行到完成。

它只会触发顶级、独立的动画。它将不会触发在Behavior或Transition中的动画,或者是动画组中的一部分的动画。

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

注意:对应的事件处理函数为onStopped


方法文档

complete()

停止动画,跳跃到最后一个属性值

如果动画没有运行,调用此方法没有效果。调用complete()后,running属性将为false。

stop()不同,complete()立即将动画快进到其结束。在以下示例中,

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

在250毫秒时调用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。


© 2024 Qt公司有限公司。本文件所包含的文档贡献为各自所有者的版权。本文件提供的文档许可根据由自由软件基金会发布的GNU自由文档许可版本1.3的条款进行。Qt及其相关标志是芬兰及全球其他国家的Qt公司商标。所有其他商标均属其各自所有者的财产。