Lottie--前端动画效果--UI输出json格式--lottie动画在JavaScript中使用_lottie json-程序员宅基地

技术标签: JavaScript  前端  动画  Lottie  javascript  

Lottie一个适用于Web、Android、iOS、React Native和Window的移动库,它可以使用Bodymovin解析以json格式导出的Adobe After Effects动画,并再移动设备上进行本地渲染。

1.需要引入JavaScript文件,我使用的是cdn中的链接。这里直接上链接,按需取用。点这里
2.json格式的文件

我不是UI啊,我也不知道怎么做出来的,我只知道使用AE做的动画再通过bodymovin导出的。到我手里就是两个文件:一个.html文件和一个.json文件。

html后缀的文件可以直接使用,但是对于项目来说会存在冗余,所以我是用的json后缀文件。

3.引入json文件

在HTML里引入json文件我是这样做的:
1.需要给json文件声明变量接收
拿到的json文件:{" ":" "," ":" "}
处理后json文件:var one={" ":" "," ":" "}
(文件太长了,复制过来占地方,就这样看吧,也不影响[狗头])

备注:这里直接修改json文件会使文件出现小红叉,虽然不影响静态页面的显示,但为了更专业,这里可以把文件修改为js文件。
方法:将json文件修改为js文件,处理文件部分改为:window.one={" ":" "," ":" "},正常引入js文件即可,除了文件格式不一样,其他都是一样的,不需要做修改。

2.在文件中使用<script></script>标签引入js文件或者json文件

4.使用lottie

接下来就是本篇文的主角–lottie

<body>
	<div id="lottie"></div>
	
	<!--引入lottie的js文件地址-->
	<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.9.1/lottie.min.js"></script>
	<!--引入的js格式文件-->
	<script type="text/javascript" src="js/json/animation.js"></script>
	<script type="text/javascript">
		//使用lottie
		const anim = lottie.loadAnimation({
      
			container: document.getElementById('lottie'),
			renderer: 'svg',//渲染方式:svg:支持交互、不会失帧;canvas、html:支持3D,支持交互
			loop: false,//循环播放:默认为true
			autoplay: false,//自动播放:默认为true
			//assetsPath:'images/',//图片文件夹的路径(这里可以设置图片地址,如果设置了最终是在这个路径下找图片)
			animationData: one //变量名(还记得上面声明变量接收的json文件或者js文件吧,跟那个接收的名字要一样)
		})

		//然后就是把这段代码放在你想要运行的时候,比如想要在加载之后就执行,那就放在以下代码里
		window.onload=function(){
      anim.play()}
	</script>
</body>
5.常用方法

anim.play():播放,从当前帧开始播放
anim.stop():停止,并回到第0帧
anim.pause():暂停,并保持当前帧
anim.goToAndStop(value,isFrame):跳到某个时刻/帧并停止
anim.goToAndPaly(value,isFrame):跳到某个时刻/帧并播放

//isFrame:指明value的单位是毫秒(false 默认的)还是帧(true),可以省略。
animation.goToAndStop(30, true)     // 跳转到第30帧并停止
animation.goToAndPlay(300)          // 跳转到第300毫秒并播放

anim.playSegments(arr,forceFlag):以帧为单位,播放指定片段

//arr:可以包含两个数字或者两个数字组成的数组
//forceFlag:表示是否立即强制播放该片段
animation.playSegments([10,20], false)          // 播放完之前的片段,播放10-20帧
animation.playSegments([[0,5],[10,18]], true)   // 直接播放0-5帧和10-18帧

anim.setSpeed(speed):设置播放速度,speed为1表示正常速度
anim.setDirection(direction):设置播放方向,1表示正向播放,-1表示反向播放
anim.destroy():删除该动画,移除相应的元素标签等

6.常用事件
//监听方法 给需要的动画添加监听
//加载完动画json文件时的data_ready事件
anim.addEventListener('data_ready', () => {
     console.log('animation data has loaded'); })

//播放完成(循环播放下不会触发)
anim.addEventListener('complete', () => {
    });

//当前循环下播放(循环播放/非循环播放)结束时触发
anim.addEventListener('loopComplete', () => {
    });

//每进入一帧就会触发,播放时每一帧都会触发一次,stop方法也会触发
anim.addEventListener('enterFrame', () => {
    });

//播放指定片段时触发,playSegments、resetSegments等方法刚开始播放指定片段时会触发,如果playSegments播放多个片段,多个片段最开始都会触发
anim.addEventListener('segmentStart', () => {
    });

//将在动画删除时触发
anim.addEventListener('destroy', () => {
    });
7.部分高阶用法(来源网络)

在制作AE动画时,将图层命名为#svgId格式,前端加载该动画后,相应的图层的id会被设置为svgId,可以通过dom⽅法获取该元素并做相应的操作;

在制作AE动画时,将图层命名为.svgClass格式,前端加载该动画后,相应的图层的class会被设置为svgClass,可以通过dom⽅法获取这些元素并做相应的操作;

8.补充对json文件的解析

注:来源于网络的图片,见水印
动画总的运行时间=(结束关键帧-起始关键帧)/帧率
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45406850/article/details/123401237

智能推荐

用limma包的voom方法来做RNA-seq 差异分析_limma voom-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏17次。用limma包的voom方法来做RNA-seq 差异分析大家都知道,这十几年来最流行的差异分析软件就是R的limma包了,但是它以前只支持microarray的表达数据。考虑到大家都熟悉了它,它又发了一个voom的方法,让它从此支持RNA-seq的count数据啦!大家都知道芯片数据跟RNA-seq数据的本质就是value的分布不一样,所以各种针对RNA-seq的差异分析包也就是提出来一个新的normalization方法而已。而我们limma本身就提出了一个voom的方法来对RNA-seq数据进行_limma voom

应聘华为的朋友小心了,应聘华为的悲惨遭遇!-程序员宅基地

文章浏览阅读9.5k次,点赞3次,收藏2次。 以下内容全部真实,为本人亲身经历。可随时进行当面对质。   本人女朋友,原本是西安一家企业里面的行政助理,工作比较稳定,收入不高,但也基本够她用了。    一天,我的一个同学(华为员工)说华为西研所正在招聘文员,让我女朋友去试一下。由于我的几个同学都是华为的,我对华为的印象也还不错,再加上华为应该可以给我女朋友更高一些的工资,于是我便让我女朋友去面试了。    经过近一个月的漫

python 遗传算法优化bp神经网络_利用遗传算法优化BP神经网络出现了一些问题,求大神解答...-程序员宅基地

文章浏览阅读1.6k次。本帖最后由 初学者er 于 2019-3-1 20:25 编辑总是出现错误:错误使用 network/subsasgn>network_subsasgn (line 550)net.IW{1,1} must be a 6-by-0 matrix.出错 network/subsasgn (line 10)net = network_subsasgn(net,subscripts,v,netna..._错误使用 network/subsasgn>network_subsasgn net.lw{2,1} must be a 53-by-6 mat

python编程特性_Python--核心编程特性-程序员宅基地

文章浏览阅读45次。1.模块导入问题如何导入模块:import sys如何查看该模块路径:prinnt(sys.path)2.== 与 is 的比较 返回Ture Flase"=="用来比较两个值是否相等"is"用来表示两个变量是否是同一个,比较的是内存地址(针对引用类型(list,tuper,dict)1 a=[1,2,3]2 b=[1,2,3]3 a==b4 aisb5 基本数据验证6 a=2567..._python编程2=a是对的吗

R语言:结构方程模型、潜变量分析-程序员宅基地

文章浏览阅读7.3k次,点赞5次,收藏43次。结构方程模型入门介绍对于熟悉线性回归拟合结构方程模型的分析师来说,首先会感到奇怪。在R环境中,拟合结构方程模型涉及学习新的建模语法,新的绘图语法以及通常是新的数据输入方法。然而,快速重新定位并且很快用户会接触到差异,拟合结构方程模型可以成为分析师工具箱中的强大工具。构造潜在变量比较替代模型对较大数据集的多组分析。设置 环境在R中开始使用结构方程建模(SEM)...

VSCode+clangd阅读linux内核源码_bear -- make-程序员宅基地

文章浏览阅读7.1k次,点赞9次,收藏69次。VSCode+clangd阅读linux内核源码_bear -- make

随便推点

React Native 修改Android工程目录-程序员宅基地

文章浏览阅读372次。标准的React-Native Android项目,用Android Studio或者IntelliJ Idea打开,需要打开React-Native下的android目录,而作为一名android开发者,当然希望是打开Reac..._react native修改android默认目录

flask-socketio 实现-程序员宅基地

文章浏览阅读167次。Flask-SocketIO使Flask应用程序可以访问客户端和服务器之间的低延迟双向通信。 客户端应用程序可以使用Javascript,C ++,Java和Swift中的任何SocketIO官方客户端库,或任何兼容的客户端来建立与服务器的永久连接。1,安装pip install flask-socketio2,依赖Flask-SocketIO兼容Python 2.7和Pyth..._flask-socketio current_user

Spark-shuffle源码细读一:ShuffleManager_sparksql shuffledrowrdd-程序员宅基地

文章浏览阅读1.4k次。version:spark 3.0.1ShuffleManager目前只有一个实现SortShuffleManager。分析其源码。_sparksql shuffledrowrdd

为何excel中数据无法计算机,造成Excel表格打不开的几种原因及解决办法-程序员宅基地

文章浏览阅读2.6k次。无法打开Excel表的原因是什么?如果无法打开Excel表怎么办?以下是导致Excel表无法打开的一些原因和解决方案。一、无法打开Excel表格的原因1、计算机中毒如果计算机中毒,则可能无法打开Excel电子表格文件。当然,如果计算机中毒了,则不仅可能无法打开Excel电子表格文件,而且也可能无法打开其他文件,并且还可能会影响不同类型病毒的影响。区别例如:如果是宏病毒,则应用宏后可能无法打开文件。..._数据模型问题导致无法打开工作簿

python是用matplotlib和seaborn.heatmap()绘制混淆矩阵_seaborn heatmap不显示值-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏7次。本文主要是对自己做实验需要绘制混淆矩阵从而做一个简单的记录。主要解决以下几个问题:矩阵数据以行为基准进行归一化;显示x轴、y轴的真实标签而不是数字;调整轴上标签字体的样式、字号、显示方向、对齐方式等;标签文字过长,默认画布无法显示完整。from sklearn.metrics import confusion_matriximport matplotlib.pyplot as pltimport numpy as npimport seaborn as snslabel_txt = _seaborn heatmap不显示值

Jlink+OpenOCD+STM32 Vscode 下载和调试环境搭建_vscode openocd stm32 jlink-程序员宅基地

文章浏览阅读753次,点赞7次,收藏9次。需要手动下载 x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z 版本的软件包,并添加环境变量。需要修改 Vscode 工程 .vscode 路径下的 launch.json 文件。对于 openocd,需要使用 Zadig 工具安装 Jlink 驱动。并将 mingw32-make.exe 名字改成 make.exe。对于 Mingw 的安装比较困难,国内的网无法正常下载组件,_vscode openocd stm32 jlink

推荐文章

热门文章

相关标签