美文网首页
Lottie 动画介绍

Lottie 动画介绍

作者: ddai_Q | 来源:发表于2022-11-29 20:36 被阅读0次

一、简介

Lottie 是一个应用十分广泛动画库,适用于Android、iOS、Web、ReactNative、Windows的库,它解析了用Bodymovin导出为json的Adobe After Effects动画,并在移动和网络上进行了原生渲染。其和 GSAP 这类专注动画曲线、插值等js动画库不同,它本质上是一套跨平台的平面动画解决方案。其提供了一套完整得从AE到各个终端的工具流,通过AE的插件将设计师做的动画导出成一套定义好的json文件,之后再通过渲染器进行渲染,它提供了“SVG”、“Canvas”和“HTML”三种渲染模式,最常用的是第一种和第二种。

image.png

二、优缺点

2.1 优点

Lottie方法方案是由设计师出动画,导出为json,给前端播放。所以,使用Lottie方案的好处在于:
① 动画由设计使用专业的动画制作工具Adobe After Effects来实现,使动画实现更加方便,动画效果也更好;
② 前端可以方便的调用动画,并对动画进行控制,减少前端动画工作量;
③ 设计制作动画,前端展现动画,专业人做专业事,分工合理;
④ 还原程度高,百分之百;
⑤ 使用lottie方案,json文件大小会比gif文件小很多,性能也会更好。

总结:能直接将AE中设计的动画效果导出为json,并直接在页面上显示,是一种开发成本又小,效果又很还原的方案。

2.2 不足

① lottie-web文件本身仍然比较大(大小为262k,经过gzip后,大小为65.8k)。所以,需要注意lottie-web的加载。目前H5项目有离线包,PC项目也会上PWA,会对其进行缓存,保证加载速度。
② lottie动画其实可以理解为svg动画/canvas动画,不能给已存在的html添加动画效果;
③ 动画json文件的导出,目前是将AE里面的参数一一导出成json内容,如果设计师建了很多的图层,可能仍然有json文件比较大(20kb+)的问题。需要设计师遵循一定的规范。
④ 有很少量的AE动画效果,lottie无法实现,有些是因为性能问题,有些是没有做。比如:描边动画等。

三、使用

3.1 基本步骤

  • 安装 lottie-web

    npm install lottie-web --save
    
  • 引入这个库

    import lottie from 'lottie-web'
    
  • 拿到 UI 给的配置文件(JSON 数据)

  • 初始化动画

    const animation = lottie.loadAnimation({
       container: document.getElementById('box'),
       renderer: 'svg',// 渲染方式:svg、canvas
       loop: true,  // 循环播放,默认:false
       autoplay: true, //自动播放 ,默认:true
       path: ' '  // json 路径
     })
    

3.2 常用方法

animation.play(); // 播放,从当前帧开始播放

animation.stop(); // 停止,并回到第0帧

animation.pause(); // 暂停,并保持当前帧

animation.goToAndStop(value, isFrame); // 跳到某个时刻/帧并停止isFrame(默认false)指示value表示帧还是时间(毫秒)

animation.goToAndPlay(value, isFrame); // 跳到某个时刻/帧并进行播放

animation.goToAndStop(30, true); // 跳转到第30帧并停止

animation.goToAndPlay(300); // 跳转到第300毫秒并播放

animation.playSegments(arr, forceFlag); // arr可以包含两个数字或者两个数字组成的数组,forceFlag表示是否立即强制播放该片段

animation.playSegments([10,20], false); // 播放完之前的片段,播放10-20帧

animation.playSegments([[0,5],[10,18]], true); // 直接播放0-5帧和10-18帧

animation.setSpeed(speed); // 设置播放速度,speed为1表示正常速度

animation.setDirection(direction); // 设置播放方向,1表示正向播放,-1表示反向播放

animation.destroy(); // 删除该动画,移除相应的元素标签等。在unmount的时候,需要调用该方法

3.3 常用事件

监听方式一:

  • onComplete:动画整体播放完成(如果是循环播放,循环播放完成后触发)
  • onLoopComplete:针对循环动画,单次一遍播放完成后触发
  • onEnterFrame
  • onSegmentStart

监听方式二:addEventListener with the following events:

  • complete
  • loopComplete
  • enterFrame
  • segmentStart
  • config_ready (when initial config is done)
  • data_ready (when all parts of the animation have been loaded)
  • DOMLoaded (when elements have been added to the DOM)
  • destroy

四、JSON 字段介绍

image.png

相关文章

网友评论

      本文标题:Lottie 动画介绍

      本文链接:https://www.haomeiwen.com/subject/ggrrfdtx.html