LottieAnimation QML 类型
Qt 的 Bodymovin 播放器。 更多...
导入语句 | import Qt.labs.lottieqt 1.0 |
继承自 |
属性
- autoPlay : bool
- direction : 枚举类型
- endFrame : int
- frameRate : int
- loops : int
- quality : 枚举类型
- source : url
- startFrame : int
- status : 枚举类型
信号
- finished()
方法
- double getDuration(bool inFrames)
- void gotoAndPlay(int frame)
- bool gotoAndPlay(string frameMarker)
- void gotoAndStop(int frame)
- bool gotoAndStop(string frameMarker)
- void pause()
- void play()
- void start()
- void stop()
- void togglePause()
详细描述
LottieAnimation 类型用于显示 Bodymovin 格式的文件。
LottieAnimation 用于加载和渲染从 Adobe After Effects 导出的 Bodymovin 文件。当前,仅支持 Bodymovin 完整规范的子集。最显著的区别包括:
- 仅支持形状层
- 仅支持时间轴的整数字幕方式(实际帧数和时间为最近的整数四舍五入)
- 不支持表达式
关于完整区别列表,请参阅 限制 部分。
示例用法
以下示例显示了 LottieAnimation 类型的简单用法
LottieAnimation { loops: 2 quality: LottieAnimation.MediumQuality source: "animation.json" autoPlay: false onStatusChanged: { if (status === LottieAnimation.Ready) { // any acvities needed before // playing starts go here gotoAndPlay(startFrame); } } onFinished: { console.log("Finished playing") } }
注意:改变元素的宽度和高度不会改变内部动画的大小。另外,无法将内容对齐到LottieAnimation
元素内部。为了达到这个效果,可以将动画放置在一个Item
元素内部。
渲染性能
内部,渲染的帧数据被缓存以提高性能。您可以通过设置QLOTTIE_RENDER_CACHE_SIZE环境变量来控制内存使用(默认值为2)。
您可以通过开启两个记录类别来监控渲染性能
qt.lottieqt.bodymovin.render
- 提供关于动画如何渲染的信息qt.lottieqt.bodymovin.render.thread
- 提供关于渲染过程如何进行的信息。
具体来说,您可以监控帧缓冲区是否经常满,或者渲染过程是否需要等待帧准备好。第一种情况意味着动画过于复杂,渲染跟不上节奏。尝试做更简单的动画或者优化QML场景。
属性文档
autoPlay : bool |
定义在动画文件加载后,播放器是否会自动启动动画。
默认值是true
。
direction : enumeration |
此属性保存渲染的方向。
常量 | 描述 |
---|---|
LottieAnimation.Forward | 正向方向(默认) |
LottieAnimation.Reverse | 反向方向 |
endFrame : int |
动画结束的帧数。此值在动画加载并准备好播放后才可用。
frameRate : int |
此属性保存Bodymovin动画的帧速率值。
frameRate
在资产加载后会更改。在资产值覆盖前,更改帧速率不会生效。要更改帧速率,可以写
LottieAnimation { source: "animation.json" onStatusChanged: { if (status === LottieAnimation.Ready) frameRate = 60; }
loops : int |
此属性保存播放器将重复的次数。值LottieAnimation.Infinite
表示播放器将连续重复动画。
默认值是1
。
quality : enumeration |
指定Bodymovin播放器的渲染质量。如果选择LowQuality
,渲染将发生在一个帧缓冲区对象中,而其他选项则将在QImage
上进行渲染(随后将渲染到屏幕上)。
常量 | 描述 |
---|---|
| 不会使用抗锯齿或平滑位图转换算法 |
| 使用平滑位图转换算法,但不使用抗锯齿(默认) |
| 同时使用抗锯齿和平滑位图转换算法 |
source : url |
这是LottieAnimation要播放的Bodymovin资产的源。
LottieAnimation可以处理Qt支持的所有URL方案。URL可以是绝对路径,也可以相对于组件的URL。
设置源属性将异步开始加载动画。要监控加载进度,请连接到status变化信号。
startFrame : int |
动画开始帧的帧数。动画加载完成后,此值可用。
状态 : 枚举 |
此属性持有 LottieAnimation 元素当前状态。
常量 | 描述 |
---|---|
LottieAnimation.Null | 在源未定义时使用的初始值(默认值) |
LottieAnimation.Loading | 播放器正在加载 Bodymovin 文件 |
LottieAnimation.Ready | 成功加载完成,播放器准备播放动画 |
LottieAnimation.Error | 加载动画时发生错误 |
例如,你可以实现 onStatusChanged
信号处理器来监视加载动画的进度,如下所示
LottieAnimation { source: "animation.json" autoPlay: false onStatusChanged: { if (status === LottieAnimation.Ready) start(); }
信号文档
finished() |
当播放器播放完成时,会发出此信号。如果是循环播放,则当最后一个循环完成后发出信号。
注意:相应的处理程序是 onFinished
。
方法文档
void gotoAndPlay(int frame) |
从给定的 frame 播放资产。
从具有给定 frameMarker 标记的帧开始播放资产。如果找到了 frameMarker,则返回 true
,否则返回 false
。
void gotoAndStop(int frame) |
将播放头移到给定的 frame 并停止。
void 暂停() |
暂停播放。
void 播放() |
从当前位置开始或继续播放。
void 开始() |
从动画开始处开始播放。
void 停止() |
停止播放并返回到 startFrame。
void 切换暂停() |
在播放和暂停状态之间切换播放器的状态。
© 2024 Qt 公司有限公司。本文档中包含的文档贡献者是各自所有者的版权。本文档是根据自由软件基金会发布的 GNU 自由文档许可证 1.3 版 许可的。Qt 及其相应标志是芬兰的 Qt 公司和/或全球其他国家的 商标。所有其他商标均为其各自所有者的财产。