一、描述
该类定义了所有动画的通用功能。通过继承此类,可以创建自定义动画。
二、类型成员
1、enum QAbstractAnimation::DeletionPolicy
- KeepWhenStopped:动画对象在停止时不会被删除。
- DeleteWhenStopped:动画对象停止时会自动删除。
2、enum QAbstractAnimation::Direction:此枚举描述处于运行状态时动画的方向。
- Forward:动画的当前时间随时间增加(即从 0 向结束/持续时间移动)。
- Backward:动画的当前时间随时间减少(即从结束/持续时间移向 0)。
3、enum QAbstractAnimation::State:这个枚举描述了动画的状态。
- Stopped:动画没有运行。这是 QAbstractAnimation 的初始状态,完成后重新进入Stopped状态。
- Paused:动画暂停。
- Running:动画正在运行。
三、属性成员
1、currentLoop : const int
动画的当前循环。默认情况下,动画的循环次数为 1,因此当前循环将始终为 0。如果循环次数大于1并且动画运行超过其持续时间,它将在当前时间 0 和当前循环 1 处自动重新开始。
2、currentTime : int
动画的当前时间。可以通过调用 setCurrentTime() 更改当前时间,或者可以调用 start() 并让动画运行,随着动画的进行自动设置当前时间。动画的当前时间从 0 开始,到 totalDuration() 结束。
3、direction : Direction
当动画处于运行状态时,此属性保存动画的方向。默认情况为 Forward。
4、duration : const int
此属性保存动画的持续时间。如果持续时间为-1,则表示持续时间未定义。
5、loopCount : int
此属性保存动画的循环次数。默认为 1,表示动画应只运行一次然后停止。通过更改它,可以让动画循环多次。值为 0 时,动画不会运行,值为 -1 时,动画将永远循环直到停止。
在具有未定义持续时间(duration = -1)的动画上它只会运行一次。
6、state : const State
动画的当前状态。
四、成员函数
4.1、信号
1、void currentLoopChanged(int currentLoop)
2、void directionChanged(QAbstractAnimation::Direction newDirection)
3、void stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
当前循环、方向、状态改变时发送的信号。
4、void finished()
动画停止并结束后发出此信号。这个信号在 stateChanged() 之后发出。
4.2、函数
1、void pause()
暂停动画。
当动画暂停时:
- state() 返回 Paused
- currentTime 的值将保持不变,直到 resume() 或 start() 被调用。
如果要从当前时间继续,请调用 resume()。
2、void resume()
暂停后恢复动画。当动画恢复时,它会发出 stateChanged() 信号。currentTime 没有改变。
3、void setPaused(bool paused)
设置动画暂停/恢复。
4、void start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped)
开始动画。policy 参数指示动画完成后是否应删除。
当动画开始时,stateChanged() 信号被发射,state() 返回 Running。
当控件到达事件循环时,动画将自行运行,随着动画的进行定期调用 updateCurrentTime()。
如果动画当前停止或已经结束,调用 start() 将倒退动画并从头开始。当动画到达结尾时,动画要么停止,要么如果 loopCount 大于 1,它将倒带并从头继续。
如果动画已经在运行,这个函数什么都不做。
5、void stop()
停止动画。当动画停止时,它发出 stateChanged() 信号,state() 返回 Stopped。
动画在到达结束后自行停止(即 currentLoopTime() == duration() && currentLoop() > loopCount() - 1),则发出 finished() 信号。
6、int currentLoopTime()
返回当前循环内的当前时间。取值范围 0 到 duration()。
7、【纯虚函数】int duration()
返回动画的持续时间,并定义 QAbstractAnimation 应该更新当前时间的时长。此持续时间是单次的,不包括循环计数。
返回值 -1 表示动画没有定义的持续时间,动画应该永远运行直到停止。这对于非时间驱动的动画或无法轻松预测其持续时间(例如,游戏中的事件驱动音频播放)非常有用。
如果动画是并行的 QAnimationGroup,则持续时间将是其所有动画的最长持续时间。如果动画是一个串行的 QAnimationGroup,则持续时间将是其所有动画持续时间的总和。
8、QAnimationGroup * group()
如果此动画是 QAnimationGroup 的一部分,则此函数返回指向该组的指针。
9、int totalDuration()
返回动画的总持续时间和有效持续时间,包括循环次数。
10、【纯虚函数】void updateCurrentTime(int currentTime)
每次动画的 currentTime 属性更改时都会调用这个纯虚函数。
11、void updateDirection(QAbstractAnimation::Direction direction)
当动画的方向改变时,这个虚函数会被调用。参数是新的方向。
12、void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
当动画的状态从 oldState 变为 newState 时,这个虚函数会被调用。