动画 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公司商标。所有其他商标均属其各自所有者的财产。