更新记录
0.2.3(2025-08-31)
- feat: 兼容uniappx 鸿蒙next
0.2.2(2025-08-11)
- fix: 修复文件名冲突导致uniappx无法运行
0.2.1(2025-07-09)
- fix: 修复h5报错问题
平台兼容性
uni-app(4.44)
Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | 5.1 | √ | √ |
微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
---|---|---|---|---|---|---|---|---|---|---|
√ | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.61)
Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
---|---|---|---|---|---|
√ | √ | 5.1 | √ | √ | √ |
lime-svga SVGA动画组件
一个高性能的SVGA动画渲染组件,完美兼容UniApp(微信小程序、H5、安卓、iOS)和UniAppX(微信小程序、H5、安卓、iOS、鸿蒙Next)平台。支持加载、播放、暂停SVGA动画,并提供丰富的动画控制和自定义功能。
插件依赖:UniAppX App端需要依赖
lime-svga-x
原生插件
文档链接
📚 组件详细文档请访问以下站点:
安装方法
- 在uni-app插件市场中搜索并导入
lime-svga
- 根据平台安装相应依赖:
- H5:
npm install svgaplayerweb --save
- Uniappx App端:需要额外导入lime-svga-x原生插件
- H5:
- 需要源码才能运行
代码演示
基础用法
最简单的方式,直接设置src属性即可播放SVGA动画。
<view class="content" style="height: 750rpx">
<l-svga src="https://static-6d65bd90-8508-4d6c-abbc-a4ef5c8e49e7.bspapp.com/static/angel.svga"></l-svga>
</view>
高级用法
通过init事件获取parser和player实例,实现更多自定义功能。
UniApp示例
<view class="content" style="height: 750rpx">
<l-svga ref="svga" @init="render"></l-svga>
</view>
const render = async ({parser, player}) => {
// 加载SVGA文件
const videoItem = await parser.load("https://static-6d65bd90-8508-4d6c-abbc-a4ef5c8e49e7.bspapp.com/static/angel.svga");
// 设置动画
await player.setVideoItem(videoItem);
// 设置当前动画的循环次数,0代表无限循环 默认 0
player.loops = 1
// 开始播放动画,reverse = true 时则反向播放
player.startAnimation()
// 监听动画完成
player.onFinished(() => {
console.log('动画结束')
})
}
UniAppX示例
<l-svga @init="render" style="height: 750rpx"></l-svga>
import type { SVGA } from '@/uni_modules/lime-svga'
const render = async ({parser, player} : SVGA) => {
const videoItem = await parser.load(path);
await player.setVideoItem(videoItem);
player.loops = 5
player.startAnimation()
player.onFinished(() => {
console.log('动画结束')
})
}
快速预览
导入插件后,可以直接使用以下标签查看演示效果:
<!-- 代码位于 uni_modules/lime-svga/components/lime-svga -->
<lime-svga />
插件标签说明
标签名 | 说明 |
---|---|
l-svga |
组件标签 |
lime-svga |
演示标签 |
Vue2使用说明
main.js中添加以下代码:
// vue2项目中使用
import Vue from 'vue'
import VueCompositionAPI from '@vue/composition-api'
Vue.use(VueCompositionAPI)
详细配置请参考官方文档:Vue Composition API
API文档
Props 属性说明
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
src | SVGA动画地址,支持网络或本地路径 | string | - |
Events 事件
事件名 | 说明 | 回调参数 |
---|---|---|
init | 组件初始化完成时触发 | {parser, player} |
Player 实例方法
属性/方法 | 说明 | 类型/参数 | 默认值 |
---|---|---|---|
loops | 设置当前动画的循环次数,0代表无限循环 | number | 0 |
clearsAfterStop | 动画停止播放后是否清空画布 | boolean | true |
fillMode | 动画播放结束后的状态,Forward保留在最后一帧,Backward保留在第一帧 | string | "Forward" |
setVideoItem | 设置需要播放的动画实体 | async (videoItem?: VideoEntity): Promise<any> |
- |
setContentMode | 设置动画缩放模式 | (contentMode: string) |
- |
startAnimation | 开始播放动画 | (reverse: boolean = false) |
- |
startAnimationWithRange | 在指定范围内播放动画 | (range: Range, reverse: boolean = false) |
- |
pauseAnimation | 暂停播放动画 | () |
- |
stopAnimation | 停止播放动画 | (clear?: boolean) |
- |
clear | 清空画布 | () |
- |
stepToFrame | 跳转到指定帧 | (frame: number, andPlay: boolean = false) |
- |
stepToPercentage | 跳转到指定进度百分比 | (percentage: number, andPlay: boolean = false) |
- |
setImage | 使用图片替换指定元素 | async (src: string, forKey: string): Promise<any> |
- |
setText | 添加文本到指定元素上 | (dynamicText: DynamicText, forKey: string) |
- |
clearDynamicObjects | 清空所有替换元素 | () |
- |
onFinished | 监听动画完成 | (callback: () => void) |
- |
onFrame | 监听当前帧的变化 | (callback: (frame: number) => void) |
- |
onPercentage | 监听当前进度的变化 | (callback: (percentage: number) => void) |
- |
contentMode 可选值
值 | 说明 |
---|---|
Fill | 填充模式,不保持原有比例,填满整个容器 |
AspectFill | 保持原有比例填充,可能会裁剪内容 |
AspectFit | 保持原有比例适应,确保内容完全显示 |
常见问题
- 确保网络资源允许跨域访问
- App端需要额外安装lime-svga-x原生插件
- 如果动画无法播放,请检查SVGA文件格式是否正确
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
支付宝赞助 | 微信赞助 |
---|---|
![]() |
![]() |