LottieAnimation QML 类型

Qt 的 Bodymovin 播放器。 更多...

导入语句import Qt.labs.lottieqt 1.0
继承自

Item

属性

信号

方法

详细描述

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上进行渲染(随后将渲染到屏幕上)。

常量描述
LottieAnimation.LowQuality不会使用抗锯齿或平滑位图转换算法
LottieAnimation.MediumQuality使用平滑位图转换算法,但不使用抗锯齿(默认)
LottieAnimation.HighQuality同时使用抗锯齿和平滑位图转换算法

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


方法文档

double getDuration(bool inFrames)

返回当前正在播放资产的持续时间。

如果给定的 inFramestrue,则返回值的单位是帧数。否则,返回单位为秒的持续时间。


void gotoAndPlay(int frame)

从给定的 frame 播放资产。


bool gotoAndPlay(string frameMarker)

从具有给定 frameMarker 标记的帧开始播放资产。如果找到了 frameMarker,则返回 true,否则返回 false


void gotoAndStop(int frame)

将播放头移到给定的 frame 并停止。


bool gotoAndStop(string frameMarker)

将播放头移到给定的标记并停止。如果找到了 frameMarker,则返回 true,否则返回 false


void 暂停()

暂停播放。


void 播放()

从当前位置开始或继续播放。


void 开始()

从动画开始处开始播放。


void 停止()

停止播放并返回到 startFrame


void 切换暂停()

在播放和暂停状态之间切换播放器的状态。


© 2024 Qt 公司有限公司。本文档中包含的文档贡献者是各自所有者的版权。本文档是根据自由软件基金会发布的 GNU 自由文档许可证 1.3 版 许可的。Qt 及其相应标志是芬兰的 Qt 公司和/或全球其他国家的 商标。所有其他商标均为其各自所有者的财产。