LottieAnimation QML Type

用于 Qt 的 Bodymovin 播放器。更多

Import Statement: import Qt.labs.lottieqt 1.0
Inherits:

Item

属性

信号

方法

详细说明

LottieAnimation 类型用于显示 Bodymovin 格式文件。

LottieAnimation 用于加载和渲染从 Adobe After Effects 导出的 Bodymovin 文件。目前,LottieAnimation 仅支持完整 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 [read-only]

动画结束时的帧数。该值在动画加载并准备好播放后可用。


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 [read-only]

动画开始的帧数。该值在动画加载并准备好播放后可用。


status : enumeration

该属性保存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 pause()

暂停播放。


void play()

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


void start()

从头开始播放动画。


void stop()

停止播放并返回startFrame


void togglePause()

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


© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.