Qt动画框架:QAbstractAnimation

一、描述

该类定义了所有动画的通用功能。通过继承此类,可以创建自定义动画。

二、类型成员

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 时,这个虚函数会被调用。 

五、一图流

​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值