DtkGui
DTK Gui module
|
#include <ddciiconplayer.h>
Public 类型 | |
enum | State { NotRunning , WaitingRead , Running } |
播放状态 更多... | |
enum | Flag { Continue = 1 , CacheAll = 2 , InvertedOrder = 4 , IgnoreLastImageLoop = 8 , AllowNonLastImageLoop = 16 , ClearCacheOnStop = 32 } |
播放参数 更多... | |
Public 槽 | |
bool | start (float speed=1.0, DGUI_NAMESPACE::DDciIconImagePlayer::Flags flags={}) |
void | stop () |
信号 | |
void | started () |
void | updated () |
void | finished () |
void | stateChanged () |
Public 成员函数 | |
DDciIconImagePlayer (QObject *parent=nullptr) | |
void | setImages (const QVector< DDciIconImage > &images) |
QVector< DDciIconImage > | images () const |
const DDciIconImage & | currentImage () const |
bool | currentLoopForever () const |
bool | setPalette (const DDciIconPalette &palette) |
DDciIconPalette | palette () const |
void | setLoopCount (int count) |
int | loopCount () const |
void | abortLoop () |
QImage | readImage () |
State | state () const |
void | clearCache () |
属性 | |
DGUI_NAMESPACE::DDciIconImagePlayer::State | state |
用于 DDciIconImage 的动画播放,功能设计类似于 QMovie。支持无缝顺序播放播放多个图片、倒序播放等高级功能。
播放参数
缓存的帧被判断为无效时将会被自动清理,如调用 DDciIconImagePlayer::setImage 改变了要播放的图片资源。
枚举值 | |
---|---|
Continue | 接着上一次动画停止时的状态继续播放,一般会配合 InvertedOrder 同时使用 |
CacheAll | 缓存本次播放中的所有动画帧 |
InvertedOrder | 倒序播放 |
IgnoreLastImageLoop | 忽略最后一个图片的动画循环次数,即无论 DDciIconImage::loopCount 的值是什么,动画都只播放一次 |
AllowNonLastImageLoop | 允许非最后一个图片循环播放,默认时不允许,以确保所有图片都有机会被播放,避免动画在前面的图片中无限循环进行播放 |
ClearCacheOnStop | 在动画停止时清理缓存的帧,无论动画是播放完成时的自动停止还是被动停止 |
|
explicit |
构造此对象。
[in] | parent | 指定此 QObject 对象的父对象 |
Dtk::Gui::DDciIconImagePlayer::abortLoop | ( | ) |
终止本次播放中的所有动画循环,即后续的动画都仅播放一遍,这会导致忽略 DDciIconImage::loopCount 和 DDciIconImagePlayer::loopCount。
Dtk::Gui::DDciIconImagePlayer::clearCache | ( | ) |
立即清理所有的缓存帧。
Dtk::Gui::DDciIconImagePlayer::currentImage | ( | ) | const |
返回当前正在播放的图片对象,如果当前的状态是 NotRunning,则会返回一个空的 DDciIconImage。
Dtk::Gui::DDciIconImagePlayer::currentLoopForever | ( | ) | const |
如果当前正在播放的图片陷入了无限循环,则返回 true,否则返回 false。
|
signal |
在本次动画播放结束时发送信号通知。因为调用 DDciIconImagePlayer::stop 导致的动画停止不会触发此信号。
Dtk::Gui::DDciIconImagePlayer::images | ( | ) | const |
返回当前已指定的图片序列。
Dtk::Gui::DDciIconImagePlayer::loopCount | ( | ) | const |
返回动画循环次数。
Dtk::Gui::DDciIconImagePlayer::palette | ( | ) | const |
返回当前已指定的调色板,如果未设置过调色板,则返回一个空的 DDciIconPalette。
Dtk::Gui::DDciIconImagePlayer::readImage | ( | ) |
读取当前动画帧,这是一个“生产者-消费者”模型,只有当状态为 WaitingRead 时才能读取,且每一帧只能读取一次。
Dtk::Gui::DDciIconImagePlayer::setImages | ( | const QVector< DDciIconImage > & | images | ) |
指定待播放的图片序列,如果当前的状态不是 NotRunning,并且与上一次指定的图片序列不同,则停止动画。
[in] | images | 图片序列,当为多个时,将无缝顺序播放所有图片。 |
Dtk::Gui::DDciIconImagePlayer::setLoopCount | ( | int | count | ) |
指定动画的循环次数,当从调用 DDciIconImagePlayer::start 到收到 DDciIconImagePlayer::finished 信号为一次循环,除非调用 DDciIconImagePlayer::stop,否则不会终止此循环。另外,需要注意的是,此循环与 DDciIconImage::loopCount 无关,他们相互独立,且会叠加生效。
Dtk::Gui::DDciIconImagePlayer::setPalette | ( | const DDciIconPalette & | palette | ) |
指定读取动画帧时所使用的调色板,如果图片支持此功能,则能控制获取到的图片的某些颜色。如果设置成功,并且当前的状态是 NotRunning,则会立即清理缓存帧,否则会在动画停止时清理缓存帧。
[out] | 如果新的 | DDciIconPalette 与当前的 DDciIconPalette 相同,则返回 false,否则返回 true。 |
|
slot |
立即启动动画,应当在此之前调用 DDciIconImagePlayer::setImages。如果启动成功,将发送 started 信号。在启动后,会根据每一帧的间隔自动触发 updated 信号,以通知使用方在合适的时候显示新的帧。在动画播放完成后,将发送 finished 信号,在动画未播放结束前调用了 stop 主动结束动画则不会发送信号。
[in] | speed | 本次动画的播放速度,其表示的是倍速,值越大动画播放的越快。设置为 0 时与设置为 1.0 等价。 |
[in] | flags | 控制本次动画播放时的一些行为。 |
[out] | 如果动画启动成功则返回 | true,否则返回 false。动画启动失败的原因一般是因为此时已经在播放动画、没有设置任何图片或所有图片都不支持动画。 |
|
signal |
通知动画已开始播放。
Dtk::Gui::DDciIconImagePlayer::state | ( | ) | const |
返回当前的状态。
|
signal |
在状态改变时发送信号通知。
|
slot |
立即停止当前动画的播放。这不会发送 finished 信号。
|
signal |
通知动画的当前帧已经发生变化,在收到此信号后需要立即调用 readImage,否则动画会被暂停,不会自动到下一帧。