动画 QML 类型
是所有 QML 动画的基类。更多...
导入声明 | import QtQuick |
继承于 |
属性
- alwaysRunToEnd : bool
- loops : int
- paused : bool
- running : bool
信号
方法
详细描述
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
。
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()
方法后,running
和paused
属性都将为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公司商标。所有其他商标均属其各自所有者的财产。