当前位置:   article > 正文

微信小程序使用lottie动画(lottie-miniprogram)

lottie-miniprogram

注意,想要在小程序中使用lottie动画,需要引入lottie-miniprogram组件,注意主包大小(咱就是主包过大了,c)!!!

话不多比,直接开始!

第一步:使用npm引入lottie-miniprogram。

              去项目根目录cmd进命令行,输入神秘口令:

npm install --save lottie-miniprogram

第二步:引入完成以后,执行构建代码:

npm init

        敲回车以后,会出现许多待填项,直接全部回车就行了,因为

第三步:打开微信开发者工具,在左上角的    工具  - >   选择构建npm,再等个一两秒后会提示构建成功!

第四步:使用:

        1、首先你需要一个可以给你生成Lottie动画资源的ui,一般是使用ae做的,没有就只能自己做或者去"Alipay Design"去找了。

        2、在代码中使用

  1. <canvas id="c0" type="2d" style="width: 100%; height: 100%;"></canvas>
  2. import lottie from 'lottie-miniprogram'//引入lottie npm包
  3. Page({
  4. data: {
  5. },
  6. onLoad() {
  7. const windowWidth = systemInfo.screenWidth; // 窗口宽度
  8. const windowHeight = systemInfo.screenHeight; // 窗口高度
  9. wx.createSelectorQuery().select('#c0').node(res => {
  10. const canvas = res.node
  11. const context = canvas.getContext('2d')
  12. canvas.width = windowWidth //设置宽高,也可以放到wxml中的canvas标签的style中
  13. canvas.hight = windowHeight
  14. lottie.setup(canvas)//要执行动画,必须调用setup,传入canvas对象
  15. lottie.loadAnimation({//微信小程序给的接口,调用就完事了,原理不太懂
  16. loop: true,//是否循环播放(选填)
  17. autoplay: true,//是否自动播放(选填)
  18. path:'https://cdn.你的域名.com/aaa.json',//lottie json包的网络链接,可以防止小程序的体积过大,要注意请求域名要添加到小程序的合法域名中
  19. rendererSettings:{
  20. context//es6语法:等同于context:context(必填)
  21. }
  22. })
  23. }).exec()
  24. }
  25. })

        注意:我举得例子是将lottie动画资源放到服务器上的例子,如果你没有的话,想放在本地,就是这样:

  1. <canvas id="c0" type="2d" style="width: 100%; height: 100%;"></canvas>
  2. import lottie from 'lottie-miniprogram'//引入lottie npm包
  3. Page({
  4. data: {
  5. },
  6. onLoad() {
  7. const windowWidth = systemInfo.screenWidth; // 窗口宽度
  8. const windowHeight = systemInfo.screenHeight; // 窗口高度
  9. wx.createSelectorQuery().select('#c0').node(res => {
  10. const canvas = res.node
  11. const context = canvas.getContext('2d')
  12. canvas.width = windowWidth //设置宽高,也可以放到wxml中的canvas标签的style中
  13. canvas.hight = windowHeight
  14. lottie.setup(canvas)//要执行动画,必须调用setup,传入canvas对象
  15. lottie.loadAnimation({//微信小程序给的接口,调用就完事了,原理不太懂
  16. loop: true,//是否循环播放(选填)
  17. autoplay: true,//是否自动播放(选填)
  18. animationData: require('../json/data.js'),//自己找个路径放置静态资源,然后引入就行,在本地的话需要改成.js文件,并且把文件中的图片路径做修改。
  19. rendererSettings:{
  20. context//es6语法:等同于context:context(必填)
  21. }
  22. })
  23. }).exec()
  24. }
  25. })

然后就算是完成了。

坑:

本地存放资源的话,首先你要改成.js文件,第二你还要在文件最开头添加

module.exports =原来的代码

第三:如果json文件中有图片的话,需要修改图片路径。这就要结合你的实际路径了。

坑2:一定一定一定一定一定一定要记得销毁,释放内存!!!!!!!!!!!

尤其是使用多个动画资源的情况下,要不非常容易崩溃

  1. //如果是在组件中的话
  2. lifetimes: {
  3. attached() {
  4. ........
  5. },
  6. detached(){
  7. this.ani.destroy()
  8. }
  9. },
  10. //如果是在主界面中的话
  11. onUnload(){
  12. this.ani.destroy()
  13. }

我在第二个坑死的老惨了!

结束下班!!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/179412
推荐阅读
相关标签
  

闽ICP备14008679号