前言
AI真是技术红利,lottie以往都是ui给到资源包,只管加载。想要了解其中配置文件的各个字段,官方网站半天找不到,用AI提问直接就有结果了,以下内容由cursor回答生成,对比了gpt的生成基本一致的,但是gpt给的相比还是简单了些。
我来为您详细解释这个Lottie动画配置文件中各个字段的含义:
根级别字段
{"v": "5.11.0", // Lottie版本号"fr": 25, // 帧率,每秒25帧"ip": 0, // 动画开始帧(in point)"op": 75, // 动画结束帧(out point),总共75帧,3秒动画"w": 750, // 动画画布宽度(像素)"h": 1000, // 动画画布高度(像素)"nm": "合成1_00049_00049", // 动画名称"ddd": 0 // 是否3D动画(0=2D,1=3D)
}
assets 资源数组
定义动画中使用的所有资源(图片、音频等):
{"id": "image_0", // 资源唯一标识符"w": 750, // 图片宽度"h": 1000, // 图片高度"u": "images/", // 图片文件夹路径"p": "img_0.png", // 图片文件名"e": 0 // 嵌入标志(0=外部文件,1=嵌入)
}
layers 图层数组
每个图层代表一个可视元素:
{"ddd": 0, // 图层是否3D"ind": 1, // 图层索引(唯一标识)"ty": 2, // 图层类型(2=图片图层,1=实体图层,0=预合成等)"nm": "合成1_00049_00000.png", // 图层名称"cl": "png", // 图层类别标识"refId": "image_0", // 引用的资源ID"sr": 1, // 拉伸倍率(时间缩放)"ks": { // 变换属性(keyframes)"o": { // 不透明度"a": 0, // 是否有动画(0=静态值,1=有关键帧)"k": 100, // 静态值(100%不透明)"ix": 11 // 属性索引},"r": { // 旋转角度"a": 0,"k": 0, // 0度旋转"ix": 10},"p": { // 位置"a": 0,"k": [375, 500, 0], // [x, y, z] 坐标"ix": 2,"l": 2 // 属性维度(2D)},"a": { // 锚点"a": 0,"k": [375, 500, 0], // 锚点坐标"ix": 1,"l": 2},"s": { // 缩放"a": 0,"k": [100, 100, 100], // [x%, y%, z%] 缩放比例"ix": 6,"l": 2}},"ao": 0, // 自动定向(0=关闭)"ip": 0, // 图层入点(开始显示的帧)"op": 1, // 图层出点(结束显示的帧)"st": 0, // 图层开始时间"bm": 0 // 混合模式(0=正常)
}
动画逻辑解释
这个动画文件实现了一个图片序列动画:
-
总时长:75帧 ÷ 25fps = 3秒
-
播放方式:每帧显示一张不同的图片,形成连续动画
-
图片切换:
- 第0帧显示 img_0.png
- 第1帧显示 img_1.png
- …
- 第49帧显示 img_49.png
- 第50-75帧继续显示 img_49.png(最后一张图停留1秒)
-
图层时间控制:
ip: 图层开始显示的帧op: 图层结束显示的帧- 每个图层只显示1帧,除了最后一个显示26帧
这种设计常用于制作帧动画、序列图动画或者类似GIF的效果。