[TOC]
QAbstractAnimation 是所有的动画相关的基类。
QAbstractAnimation 定义了所有动画类相关的基础功能,通过继承该类,您可以实现动画的其它功能,或者添加自定义的特效。
属性 | 方法 |
---|---|
头文件 | #include<QAbstractAnimation> |
qmake | QT+=core |
自从 | Qt 4.6 |
继承 | QObject |
派生 | QAnimationGroup,QPauseAnimation,QVariantAnimation |
类型 | 方法 |
---|---|
enum | DeletionPolicy { KeepWhenStopped, DeleteWhenStopped } |
enum | Direction { Forward, Backward } |
enum | State { Stopped, Paused, Running } |
属性 | 类型 | 属性 | 类型 |
---|---|---|---|
currentLoop | const int | duration | const int |
currentTime | int | loopCount | int |
direction | Direction | state | const State |
返回类型 | 函数名 |
---|---|
QAbstractAnimation(QObject *parent = Q_NULLPTR) | |
virtual | ~QAbstractAnimation() |
int | currentLoop() const |
int | currentLoopTime() const |
int | currentTime() const |
Direction | direction() const |
virtual int | duration() const = 0 |
QAnimationGroup * | group() const |
int | loopCount() const |
void | setDirection(Direction direction) |
void | setLoopCount(int loopCount) |
State | state() const |
int | totalDuration() const |
返回类型 | 函数名 |
---|---|
void | pause() |
void | resume() |
void | setCurrentTime(int msecs) |
void | setPaused(bool paused) |
void | start(QAbstractAnimation::DeletionPolicy policy = KeepWhenStopped) |
void | stop() |
返回类型 | 函数名 |
---|---|
void | currentLoopChanged(int currentLoop) |
void | directionChanged(QAbstractAnimation::Direction newDirection) |
void | finished() |
void | stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
返回类型 | 函数名 |
---|---|
virtual void | updateCurrentTime(int currentTime) = 0 |
virtual void | updateDirection(QAbstractAnimation::Direction direction) |
virtual void | updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
返回类型 | 函数名 |
---|---|
virtual bool | event(QEvent *event) |
QAbstractAnimation 定义了所有动画共享的功能。通过继承这个类,您可以创建自定义的动画,并将其插入到动画框架中。
动画的进度的当前时间由当前时间(currentLoopTime())控制,数值从0毫秒开始到其最后的持续时间(duration())。该值在动画运行时会自动更新,也可以直接由 setCurrentTime() 来设置。
在任何时候,动画的状态都只有三种:Running、Stopped 或 Paused——由枚举变量 State定义。可以通过函数 start()、stop() 、pause() 或 resume() 来改变当前动画的状态。动画开始时总会重置它的当前时间。若被暂停,则继续播放后会从相同的“当前时间”继续。若动画停止,则无法继续,但会保留“当前时间”(直到再次开始)。QAbstractAnimation 在状态改变时将会发出信号 stateChanged()。
通过设置 loopCount 属性,动画可以循环任意次数。当动画的时间到达 duration() 时,它将重置当前时间并继续运行。循环数为1(默认值)意味着动画只会播放一次。注意,若 duration
为-1,动画将无限播放,直到主动停止;当前时间会无限增长。当当前时间等于 duration() ,并且正在处理最后一次循环时,动画将进入 Stopped 状态,并发送 finished() 信号。
QAbstractAnimation 为子类提供了纯虚函数来跟踪动画的进度:duration() 和 updateCurrentTime()。duration() 函数用于提供动画的持续时间(如上文所述)。当动画时间变化时,动画框架会调用 updateCurrentTime()。通过重新实现该函数,您可以追踪动画进度。注意:此函数的调用间隔和调用次数均未定义,虽然通常每秒会更新60次。
通过重新实现 updateState(),您可以追踪动画状态的改变,这对于不受时间驱动的动画特别有用。
另请参阅:QVariantAnimation,QPropertyAnimation,QAnimationGroup 和 The Animation Framework。
函数 | 值 | 描述 |
---|---|---|
QAbstractAnimation::KeepWhenStopped | 0 | 动画停止时不会被删除 |
QAbstractAnimation::DeleteWhenStopped | 1 | 动画停止时会被自动删除 |
该枚举描述了动画在 Running 状态时的运行的方向。
函数 | 值 | 描述 |
---|---|---|
QAbstractAnimation::Forward | 0 | “当前时间”随时间递增(即从0向终点/duration 移动) |
QAbstractAnimation::Backward | 1 | ”当前时间“随时间递减(即从终点/duration 向0移动) |
该枚举描述了动画的状态。
函数 | 值 | 描述 |
---|---|---|
QAbstractAnimation::Stopped | 0 | 动画未运行。这是 QAbstractAnimation 的初始状态,也是 [QAbstractAnimation] 结束后的状态。除非 setCurrentTime() 被调用,或者调用 start() 来启动动画,否则”当前时间“不会改变。 |
QAbstractAnimation::Paused | 1 | 动画暂停(即使暂时挂起)。调用 resume() 将恢复动画。 |
QAbstractAnimation::Running | 2 | 动画运行中。当控制权处于事件循环中时,QAbstractAnimation 将会有规律地更新”当前时间“,并在适合地时机调用 updateCurrentTime()。 |
此属性存储动画当前的循环数。
此属性描述了动画当前的循环数。默认的循环次数为1,所以当前的循环次数永远为0。若循环总数2的,当动画运行超过其 duration 时将重新开始,并将当前时间重置为0,当前循环数置为1,以此类推。
当当前循环变化时,QAbstractAnimation 会发出 currentLoopChanged() 信号。
存取函数
返回类型 | 函数名 |
---|---|
int | currentLoop() const |
通知信号
返回类型 | 函数名 |
---|---|
void | currentLoopChanged(int currentLoop) |
此属性存储动画当前的时间与进度。
此属性描述了动画当前的时间。您可以通过 setCurrentTime
函数来修改当前时间,也可以调用 start() 让动画运行,当前时间会随动画播放进度自动设置。
动画的当前时间从0开始,在 totalDuration() 结束。
存取函数
返回类型 | 函数名 |
---|---|
int | currentTime() const |
void | setCurrentTime(int msecs) |
另请参阅:loopCount 和 currentLoopTime()。
该属性存储动画在 Running 状态时的运行方向。
该方向表明了在 start() 被调用后,时间是从0向动画时长移动,还是从持续时间向0移动。
默认方向为 Forward。
存取函数
返回类型 | 函数名 |
---|---|
Direction | direction() const |
void | setDirection(Direction direction) |
通知信号
返回类型 | 函数名 |
---|---|
void | directionChanged(QAbstractAnimation::Direction newDirection) |
该属性存储动画的持续时间。
如果 duration
为-1,则表示 duration
未定义,此时动画将会忽略 loopCount
属性。
存取函数
属性 | 函数名 |
---|---|
virtual int | duration() const = 0 |
该属性存储动画的循环次数。
此属性用整形描述了动画的循环次数。默认值为1,表示该动画只播放一次,然后停止。通过修改其值,动画会改变循环的次数。当值为0时,动画完全不会运行;当值为-1时,动画将会永远循环直到主动停止。如果动画未设置 duration
属性则无法循环,即只会播放一次。
存取函数
属性 | 函数名 |
---|---|
int | loopCount() const |
void | setLoopCount(int loopCount) |
动画状态。 此属性描述了动画的当前状态。当动画状态改变时,QAbstractAnimation 会发射 stateChanged() 信号。
存取函数
属性 | 函数名 |
---|---|
State | state() const |
通知信号
属性 | 函数名 |
---|---|
void | stateChanged(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) |
构造 QAbstractAnimation 基类,并将 parent
参数传递给 QObject 的构造函数。
另请参阅:QVariantAnimation 和 QAnimationGroup
每当当前循环发生变化时,QAbstractAnimation 会发射该信号。currentLoop
为当前循环。
注意: 属性 currentLoop
的通知信号。
另请参阅:currentLoop() 和 loopCount()。
每当方向改变时,QAbstractAnimation 会发射该信号。newDirection
为新方向。
注意: 属性 direction
的通知信号。
另请参阅:direction()。
在动画停止并到达终点之后发送此信号。
该信号在 stateChanged() 之后发射。
另请参阅:stateChanged()。
暂停动画。当动画暂停时,state() 返回 Paused。在调用 resume() 或 start() 前,currentTime() 的值将会保持不变。若想从当前时间继续,则调用 resume()函数。
另请参阅:start(),state() 和 resume()。
暂停后恢复动画。当动画恢复时,会发射会发出 resumed() 信号和 stateChanged() 信号。当前时间不会变化。
若 paused
为 true
,则暂停动画。若 pause
为 false
,则恢复动画播放。
另请参阅:state(),pause() 和 resume()。
开始动画。policy
参数表示动画在结束后是否会被删除。动画启动时,会发射 stateChanged() 信号,state() 会返回 Running
。当控制权回到事件循环时,动画会自动播放,并随播放进度周期性调用 updateCurrentTime(),
若动画当前已被停止或者已经结束,调用 start()
将会充值动画并从头开始。当动画到达终点时,动画将会停止;或者当其循环次数大于1,则会从头开始。
若动画已经在运行中,此函数不会有任何操作。
每当动画的状态从 oldState
变为 newState
时,QAbstractAnimation 会发射此信号。此信号会在虚函数 updateState()被调用后发射。
注意: 属性 state 的通知信号。
另请参阅:updateState()。
停止动画。当动画停止时,会发射 stateChanged() 信号,state() 返回 Stopped
。当前时间不会变化。
若动画到达终点后自动结束(比如 currentLoopTime() == duration() 或者 currentLoop() > loopCount() - 1),则会发射 finished() 信号。
若在运行中则停止动画,然后销毁 QAbstractAnimation。若当前动画是 QAnimationGroup 的一部分,则会在销毁前被自动移除。
返回当前循环中的当前时间。它的范围为0到 duration()。
另请参阅: duration() 和 currentTime()。
此纯虚函数返回动画持续时间,并定义 QAbstractAnimation 应该多久更新一次当前时间。持续时间是本地的,并且不包括循环总数。
返回值-1表示动画没有定义持续时间,动画将永远运行下去,直到被主动停止。这对于非时间驱动的动画或者无法预测其持续时间的动画(例如游戏中事件驱动的音频回放)十分有用。
若该动画是并行的 QAbstractAnimation 是并行的,则持续时间是所有动画中最长的。若此动画是顺序的 QAnimationGroup,则持续时间是所有动画的总和。
注意:duration
属性的获取函数。
另请参阅:loopCount()。
QObject::event(QEvent *e) 的重新实现。
若此动画是 QAnimationGroup 的一部分,则会返回该动画组的指针,否则返回nullptr
。
另请参阅:QAnimationGroup::addAnimation()。
返回动画的有效持续时间的综合,包含循环次数。 另请参阅:duration() 和 currentTime()。
此虚函数会当动画的 currentTime
每次发生变化时被调用。
另请参阅:updateState()。
此虚函数会在 QAbstractAnimation 的播放方向改变时被调用。参数 direction
表示新的方向。
另请参阅:setDirection(),direction()。
此虚函数会在动画的状态改变从 oldState
切换为 newState
时被调用。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )