本文将总结QML中的动画类型,以及一些类型的基本使用方法。
首先,肯定是Animation
类型,该类型是所有动画类型的基本类型,注意:我们是不能在qml文档中直接使用该类型,该类型是一个基本类型,为不同的动画方式提供公用的属性和方法(可以理解成在C++中的抽象基类))。
Animation
类型提供了四个属性:
(1)alwaysRunToEnd:该属性接收布尔类型的参数。该属性保存动画是否运行到完成才停止。当loops
属性被设置时,这个属性是最有用的,因为动画将正常播放结束,但不会重新启动。
(2)loops:该属性接收int类型的参数。该属性保存播放动画的次数。默认是1,如果该属性设置为Animation.Infinite
时,动画将不断重复,直到显式停止(将running属性设置为false,或者调用stop()方法)。
(3)paused:该属性接布尔类型的参数。该属性标识动画是否暂停。设置paused属性可以控制动画是否暂停。在JavaScript中使用pause()和resume()方法也可以强制暂停和恢复动画。
(4)running:该属性接收布尔类型的参数。该属性标识动画当前是否正在运行。
Animation
类型提供三个信号:
(1)finished():该信号在动画自然完成时发出。注意:当run被设置为false时,不会触发该信号;loops属性被设置为Animation.Infinite
的动画也不会触发该信号。
(2)started():这个信号在动画开始时发出。只有顶级、独立的动画才会触发该信号。过渡中的动画或动画组中的动画不会触发该信号。
(3)stopped():当动画结束时发出该信号。动画可能已手动停止,或者可能已运行完成。
Animation
类型提供六种方法:
(1)complete():停止动画,跳转到最终属性值。如果动画没有运行,调用此方法将没有效果。在调用complete()之后,running属性将被设置为false。与stop()不同,complete()会立即将动画快进到结束位置。例如下列代码:
Rectangle {
NumberAnimation on x {
from: 0; to: 100; duration: 500 }
}
上面代码中,使用NumberAnimation
类型动画Rectangle的x属性值,动画范围值为:0~100。当我们在250ms时调用stop()
函数,x属性值将是50;如果调用complete()
,x属性值将为100。
(2)pause():该方法将暂停动画。如果动画已经暂停或者处于未运行状态,调用该方法将没有效果。在调用pause()之后,pause属性将被设置为true。
(3)restart():该方法将重新开始动画。该方法理解成是stop和start的组合:先调用stop()停止动画,然后再调用start()开始动画。
(4)resume():恢复暂停的动画。如果动画没有被暂停或没有运行,调用此方法将没有效果。在调用resume()之后,pause属性将被设置为false。
(5)start():该方法将开始动画。如果动画已经运行了,调用该方法将没有效果。在调用start()之后,running属性将被设置为true。
(6)stop():停止动画。如果动画没有运行,调用该方法将不起作用。在调用stop()之后,running和paused属性都将被设置为false。通常情况下,stop()会立即停止动画,并且动画不会对属性值产生进一步的影响。在以下代码中:
Rectangle {
NumberAnimation on x {
from: 0; to: 100; duration: 500 }
}
假如我们在250ms时停止动画,x属性的值将为50。但如果我们设置了alwaysRunToEnd
属性,running
属性会立即变为false,但是动画将继续运行,直到动画到完成位置才停止。
在QML用于描述动画和转场的类型如下表所示:
序号 | 名称 | 解释 |
---|---|---|
1 | Transition | 表示状态变化时的动画转换 |
2 | SequentialAnimation | 串行运行动画 |
3 | ParallelAnimation | 并行运行动画 |
4 | Behavior | 为属性更改指定默认动画 |
5 | PropertyAction | 设置动画期间的属性更改 |
6 | PauseAnimation | 用于在动画过程中暂停动画 |
7 | SmoothedAnimation | 该类型允许属性平滑的跟踪值 |
8 | SpringAnimation | 允许属性以类似弹簧的运动方式跟踪一个值 |
9 | ScriptAction | 在动画过程中运行脚本 |
QML中基于数值的动画类型如下表所示:
序号 | 名称 | 解释 |
---|---|---|
1 | AnchorAnimation | Anchor变化动画 |
2 | NumberAnimation | 数值改变动画 |
3 | ColorAnimation | 颜色改变动画 |
4 | ParentAnimation | 父值变化动画 |
5 | PathAnimation | 路径改变动画 |
6 | PropertyAnimation | 属性改变动画 |