主题
LimeLottie Lottie动画组件
一款Lottie动画组件,提供丰富的API接口,可以满足各种动画播放需求,兼容WEB、微信小程序、安卓、IOS、鸿蒙。
插件依赖:
lime-shared
文档链接
📚 组件详细文档请访问以下站点:
安装方法
微信小程序
cmd
npm install lottie-miniprogram --save
WEB
cmd
npm install lottie-web --save
代码演示
基础用法
最简单的Lottie动画组件用法,只需要设置动画路径即可。
html
<l-lottie l-style="height:200px" src="https://example.com/animation.json"></l-lottie>
通过 ref 调用组件方法
通过 ref 可以直接调用组件暴露的方法来控制动画。
html
<view style="height:200px">
<l-lottie ref="lottieRef" src="https://example.com/animation.json"></l-lottie>
</view>
<button @click="play">播放</button>
<button @click="pause">暂停</button>
<button @click="destroy">销毁</button>
js
import type { LimeLottie } from '@/uni_modules/lime-lottie';
const lottieRef = ref<LLottieComponentPublicInstance | null>(null);
const play = () => {
lottieRef.value?.play();
};
const pause = () => {
lottieRef.value?.pause();
};
const destroy = () => {
lottieRef.value?.destroy();
};
动态加载动画
使用 loadAnimation
方法动态加载动画并获取 LimeLottie 实例。
html
<view style="height:200px">
<l-lottie ref="lottieRef"></l-lottie>
</view>
<button @click="loadAndPlay">加载并播放</button>
js
import type { LimeLottie } from '@/uni_modules/lime-lottie';
const lottieRef = ref<LLottieComponentPublicInstance | null>(null);
const loadAndPlay = async () => {
if (lottieRef.value == null) return;
// 动态加载动画
const lottie = await lottieRef.value.loadAnimation('https://example.com/animation.json');
// 使用 LimeLottie 实例的方法
lottie.setSpeed(2);
lottie.play();
};
通过 loaded 事件动态加载
通过 loaded
事件获取 loadAnimation
函数,实现动态加载。
html
<view style="height:200px">
<l-lottie @loaded="onLoaded"></l-lottie>
</view>
<button @click="loadAnimation1">加载动画1</button>
<button @click="loadAnimation2">加载动画2</button>
js
import type { LimeLottie } from '@/uni_modules/lime-lottie';
// Object 在uniappx是UTSJSONObject
type LoadAnimationFn = (url: string | UTSJSONObject) => Promise<LimeLottie>;
const loadAnimationFn = ref<LoadAnimationFn | null>(null);
const onLoaded = (loadAnimation: LoadAnimationFn) => {
loadAnimationFn.value = loadAnimation;
};
const loadAnimation1 = async () => {
if (!loadAnimationFn.value) return;
const lottie = await loadAnimationFn.value('https://example.com/animation1.json');
lottie.play();
};
const loadAnimation2 = async () => {
if (!loadAnimationFn.value) return;
const lottie = await loadAnimationFn.value('https://example.com/animation2.json');
lottie.play();
};
自定义动画属性
设置动画的循环、自动播放和速度。
html
<template>
<l-lottie
src="https://example.com/animation.json"
:loop="true"
:autoplay="true"
:speed="1.5"
></l-lottie>
</template>
快速预览
导入插件后,可以直接使用以下标签查看演示效果:
html
<!-- 代码位于 uni_modules/lime-lottie/components/l-lottie -->
<l-lottie />
插件标签说明
标签名 | 说明 |
---|---|
l-lottie | 组件标签 |
API文档
Props 属性说明
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
src | 动画资源路径 | string | - |
frames | 动画数据(JSON格式) | Object | - |
loop | 是否循环播放 | boolean | false |
autoplay | 是否自动播放 | boolean | false |
speed | 播放速度 | number | 1 |
direction | 播放方向(1为正向,-1为反向) | number | 1 |
lStyle | 自定义样式 | string | object | - |
Events 事件
事件名 | 说明 | 回调参数 |
---|---|---|
loaded | 组件挂载完成时触发,返回 loadAnimation 函数 | loadAnimation: Function |
ready | 动画实例创建完成时触发,返回 LimeLottie 实例 | lottie: LimeLottie |
complete | 动画播放完成时触发 | - |
error | 动画加载或播放出错时触发 | error: Error |
组件方法(通过 ref 调用)
通过 ref
可以调用组件实例的以下方法:
方法名 | 说明 | 参数 | 返回值 |
---|---|---|---|
loadAnimation | 加载动画并返回 LimeLottie 实例 | url: string | Object | Promise<LimeLottie> |
play | 播放当前动画 | - | - |
pause | 暂停当前动画 | - | - |
destroy | 销毁当前动画实例 | - | - |
LimeLottie 实例方法
通过 loadAnimation
方法或 ready
事件可以获取 LimeLottie 实例,实例提供以下方法:
方法名 | 说明 | 参数 |
---|---|---|
play | 播放动画 | - |
stop | 停止动画 | - |
pause | 暂停动画 | - |
destroy | 销毁动画实例 | - |
setSpeed | 设置播放速度 | speed: number |
setDirection | 设置播放方向 | direction: AnimationDirection |
goToAndPlay | 跳转到指定位置并播放 | value: number, isFrame?: boolean |
goToAndStop | 跳转到指定位置并停止 | value: number, isFrame?: boolean |
addEventListener | 添加事件监听 | name: AnimationEventName, callback: AnimationEventCallback |
removeEventListener | 移除事件监听 | name: AnimationEventName, callback: AnimationEventCallback |
AnimationEventName 可选值:
enterFrame
- 每帧触发(未实现)loopComplete
- 循环完成时触发complete
- 动画完成时触发segmentStart
- 片段开始时触发destroy
- 销毁时触发
AnimationDirection 可选值:
1
- 正向播放-1
- 反向播放
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
支付宝赞助 | 微信赞助 |
---|---|
![]() | ![]() |