uniapp里接入lottie-miniprogram详细指南

包工头:小张啊,我们页面里那几个gif也太low了,你能不能追求远大点。
ui妹子:软件推荐可以用lottie实现。
:这玩意我耍过,交给我了。

牛逼已经吹出去了,开干,

遇到问题有,

  • github相关文档demo不足
  • 只找到了微信原生开发相关的技术文档
  • uniapp插件市场的lottie文章也水得很,无法解决我手头的问题

东拼拼西凑凑,灵活使用搜索大法,耗时约4小时终于完成

先放demo方便大家学习(copy)

<view class="container">
	  <view style="text-align: center;">
		  <canvas id="lottie_demo" type="2d" style="display: inline-block; width: 300px; height: 300px;" />
		  <button @tap="init" style="width: 300px;">初始化</button>
		  <button @tap="play" style="width: 300px;">播放</button>
		  <button @tap="pause" style="width: 300px;">暂停</button>
	  </view>
</view>
<script>
import lottie from 'lottie-miniprogram';
let ani = null; // 必须放在外面,uni里不要挂在this上,否则会触发循环引用的报错
export default {
	data() {
		return {
			inited: false
		};
	},
	methods: {
		init() {
			if (this.inited) {
				return;
			}
			this.createSelectorQuery()
				.select('#lottie_demo')
				.node(res => {
					console.log(res); // 节点对应的 Canvas 实例。
					const canvas = res.node;
					const context = canvas.getContext('2d');
					canvas.width = 300;
					canvas.height = 300;
					lottie.setup(canvas);
					ani = lottie.loadAnimation({
						loop: true,
						autoplay: true,
						animationData: require('../../static/animation/data.js'),
						rendererSettings: {
							context
						}
					});
					this.inited = true;
				})
				.exec();
		},
		play() {
			ani.play();
		},
		pause() {
			ani.pause();
		}
	}
};
</script>

坑点总结

  1. uniapp里无法通过引入script标签加载cdn资源的形式使用lottie,那是lottie-web里用的
  2. createSelectorQuery的页面用uni/wx,组件用this,用错会导致明明节点挂了id,但是node函数里res为null
  3. loadAnimation里animationData无法加载json,只能用js,如果ui给你的是json,你需要在文件代码的头处加入“module.exports=”,如果json文件里有奇怪的js代码不妨删了试试看如果不报错就没关系。
  4. ui妹子给我json和images文件夹这咋整?
  • json按第三点替换成js
  • 把json文件中这种有u,有p,有e的对象做调整
    {"id":"image_0","w":1113,"h":1162,"u":"images/","p":"img_0.png","e":0}

    把u加到p前面并用require函数包裹,把u改成空,把e改为1
     

    {"id":"image_0","w":1113,"h":1162,"u":"","p":require("./images/img_0.png"),"e":1}

启动,运行到微信小程序,这不就跑起来了么。

启动,运行到字节跳动小程序,这不也跑起来了么,虽然报了点小错,但是又不是不能用不是(掏出菜刀放到产品面前)

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
lottie-web是一个开源的JavaScript库,用于在Web上渲染和播放Lottie动画。Lottie动画是由Adobe After Effects创建的矢量动画,可以使用Bodymovin插件导出为JSON格式,然后在网页上使用lottie-web库进行渲染和播放。 lottie-web库提供了很多功能和选项,以便开发者可以根据自己的需求使用和定制动画。它可以用于创建交互式的动画效果,如按钮的点击动画、加载动画、进度条动画等。此外,它还支持设置动画的循环次数、播放速度、淡入淡出效果等。 在使用lottie-web时,我们需要引入相关的CSS和JavaScript文件,并通过HTML的canvas元素来创建动画的容器。然后,我们可以使用lottie.loadAnimation()方法来加载并初始化动画,在loadAnimation()方法中,我们可以传入一些参数,如JSON文件路径、容器元素、循环次数等。 一旦动画加载完成,我们就可以使用lottie.play()方法来播放动画,使用lottie.stop()方法来停止动画。此外,还有一些其他的方法,如lottie.pause()方法暂停动画,lottie.setSpeed()方法设置播放速度等。 值得一提的是,lottie-web还支持事件监听,我们可以通过lottie.addEventListener()方法来监听动画的各种事件,如动画加载完成、播放完成等,以便于我们在合适的时机进行相应的处理。 总之,lottie-web文档提供了全面的使用说明和示例代码,可供开发者参考和学习。使用lottie-web,我们可以轻松地在Web上使用Lottie动画,为网页添加更加生动和有趣的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值