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 公司和/或全球其他国家的 商标。所有其他商标均为其各自所有者的财产。