uniapp中使用lottie实现JSON动画

server/2024/10/20 19:56:14/

uniapp中使用lottie实现JSON动画

    • 不喜欢废话直接开干
    • 一、引入相关依赖
    • 二、在项目的目录新建目录结构
    • 三、操作步骤
    • 四、编写自定义组件代码
    • 五、组件的使用
    • 提一嘴
    • 更多
      • lottie-web常用方法
      • 添加点击事件

不喜欢废话直接开干

一、引入相关依赖

npm install lottie-web
# 如果有问题可以和我保持一致:npm install lottie-web@5.12.2

二、在项目的目录新建目录结构

  • 存放资源的目录,用于存放JSON动画:/static/svgJson/*
  • 用于存放动画组件的目录:/components/SvgAnimation/*

三、操作步骤

在一些素材网站上下载我们需要的JSON素材,或者直接找UI给你

比如我们熟知的iconfon

下载后我们会得到一个.json的文件,我们把它放在资源目录下,比如:/static/svgJson/start.json

在存放动画组件中新增一个自定义组件,就比如:/components/SvgAnimation/start.vue

四、编写自定义组件代码

模板代码如下:

<template><view class="container-start"><view id="start"></view></view>
</template><script module="renderScript" lang="renderjs">
import lottie from 'lottie-web'
import start from "../../static/svgJson/start.json";
export default {mounted() {this.ready()},methods: {ready() {lottie.loadAnimation({container: document.getElementById("start"),renderer: 'svg',loop: true,autoplay: true, animationData: start }); }}
};
</script><style>
/* 这里可以自己定义相关的样式,这里只是做个示范,具体按照界面而定 */
.container-start {width: 50%;
}
#start {width: 100%;
}
</style>

须知:代码中的start可以替换成自己保存的JSON文件

打个比方就是:我下载了一个名字叫end.json文件,我就在/components/SvgAnimation目录下新增一个end.vue

然后使用快捷键ctrl+h,然后将模板中的start单词全部替换成end即可

五、组件的使用

在页面中引入组件直接使用即可:

import More from "../../components/SvgAnimation/more.vue"# 在界面中使用:
<More></More>

提一嘴

由于比较懒,而且项目中使用的也不是太多,所以并没有进行封装。

一方面由于使用了renderjs,封装起来也不是一件短时间就能完成的事情,涉及到uniapp的视图层和逻辑层的数据交互,更多的是没有机会去深入研究。

另一方面也就是拿着模板代码直接替换一个名称也就是一会的事情。

如果有大佬有封装的代码那更好不过了!

更多

lottie-web常用方法

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的时候,需要调用该方法

添加点击事件

<template><view class="container"><view id="home"></view></view>
</template><script module="renderScript" lang="renderjs">
import lottie from 'lottie-web'
import home from "../../static/svgJson/home.json";
export default {data(){return {animation: null}},mounted() {this.ready()this.addClickEvent()},methods: {ready() {this.animation = lottie.loadAnimation({container: document.getElementById("home"),renderer: 'svg',loop: false, //是否循环播放autoplay: true, //是否自动播放animationData: home // 加载json的文件名}); // 加载this.animation.goToAndStop(55,true)},addClickEvent(){document.getElementById("home").addEventListener("click",()=>{this.animation.playSegments([10,65],true)})}},beforeDestroy() {document.getElementById("home").removeEventListener("click",()=>{})}
};
</script>

界面中给组件添加点击事件:

<Home @click.native="clickSvg"></Home>

结尾:更多的操作由各位去发掘吧


http://www.ppmy.cn/server/133435.html

相关文章

python装饰器property的使用

使用 Python 的 property 装饰器管理类属性 在 Python 中&#xff0c;property 装饰器是一个非常有用的工具&#xff0c;它允许我们将一个方法转换为属性调用。这样&#xff0c;我们就可以像访问对象的属性一样来调用该方法&#xff0c;而不需要使用括号。这通常用于封装数据&…

Spring Security 基础配置详解(附Demo)

目录 前言1. 基本知识2. Demo3. 实战 前言 基本的Java知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09; 1. 基本知识 HttpSecurity 是 Spri…

Linux下的C语言和系统的缓冲区

首先来看看这两个代码 1. #include<stdio.h> #include<stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include<unistd.h> #include<string.h>void test() {size_t fdopen("log.txt",O_WR…

低代码框架参考

企业管理信息系统作为一类重要的应用软件系统&#xff0c;具有自己的特点&#xff0c;主要有两个方面&#xff1a; 1. 系统规模大&#xff0c;目前市场上常见的ERP系统一般都有几千个页面。 2. 页面逻辑相似性强。经过比较可以发现&#xff0c;大部分页面具有类似的功能&…

项目模块化下的maven管理工具的使用

开门见山--情境导入 见如下项目的架构&#xff0c;如图&#xff0c;我们可以看到在当前的项目目录中&#xff0c;有两个项目&#xff0c;一个是模块是实现逻辑类的功能 xf-common, 另外一个模块是现实业务逻辑功能 xf-file-manager 但是在这里我们主要用这个模块来测试模拟真…

机器学习【金融风险与风口评估及其应用】

机器学习【金融风险与风口评估及其应用】 一、机器学习在金融风险评估中的应用1.提升评估准确性2.实现自动化和智能化3.增强风险管理能力4.信用评估5.风险模型6.交易策略7.欺诈检测 二、机器学习在金融风口评估中的应用1.识别市场趋势2.评估创新潜力3.优化投资策略4. 自然语言处…

使用Python实现深度学习模型:智能生产线优化

在现代工业中,智能化和自动化生产线已成为提升生产效率和降低成本的关键手段。通过使用深度学习模型,可以实现对生产线的智能优化,从而进一步提高生产线的自动化水平和生产效率。本文将介绍如何使用Python实现深度学习模型,用于智能生产线优化。 一、深度学习在智能生产线…

git分支模型

定义分支 长期分支 指长期存在的分支&#xff0c;也叫固定分支 developmaster 短期分支 短分支没有固定的分支名。但是有分支名规范 feature分支hotfix分支 分支模型 暂时无法在文档外展示此内容 参考 分支的目的是隔离&#xff0c;但多一个分支也意味着维护成本的增加。…