简单说说svga的应用,留个案例自己用

2024-04-28 04:08
文章标签 简单 应用 案例 svga 留个

本文主要是介绍简单说说svga的应用,留个案例自己用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目上临时要用到svga,所以就去官网看了看用法。 写了个demo,记录一下,以便不时之需。

svga的githubhttps://github.com/svga/SVGAPlayer-Web

  • 按照步骤操作即可
  • url一定是http这样的全链接形式。
  • 这个demo是在html里用的,直接引入的cdn链接。想用在其他地方的,可以去官网看看。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>svga demo</title><style>#svga1 {width: 218px;height: 173px;}</style>
</head>
<body><!-- 第一步:建一个div,带上id属性 --><div id="svga1"></div><!-- 第二步,引入svga的cdn链接 --><script src="https://cdn.jsdelivr.net/npm/svgaplayerweb@2.1.0/build/svga.min.js"></script><script>// 第三步,实例化players和parsersvar players = [];var parsers = [];players[0] = new SVGA.Player("#svga1");parsers[0] = new SVGA.Parser("#svga1");var URLS = ["https://xxx.com/xxx.svga",]// 第四步,准备动画和使用动画svgaAnimation(players[0], parsers[0], URLS[0]);// loops 0 为循环 1为1次function svgaAnimation(player, parser, url){parser.load(url,function(videoItem){player.loops = 0;player.setVideoItem(videoItem);player.clearsAfterStop = false;  //默认是清空画布 ,这边设置不清空画布player.startAnimation();},function(err){console.log("svga播放失败");})}</script>
</body>
</html>

还有个api,是控制帧数的。

// 第一种写法,是在parser.load函数里写。控制所有的动画帧数
player.onFrame(function(i) {  // i 表示帧数// do something...i === 10 && console.log(1) // 比如 当动画播放到第10帧时,输出1
})// 第二种写法,单独控制一个player的动画帧数
players[x].onFrame(function(i) {// do something...
})

同一个svga动画在6个不同位置都循环播放
  • 这时候的svga盒子,就不能用id来表示了,因为id是唯一值,要是有6个位置,就要写6个不同的id值,相当麻烦。这时候可以用类名来一次性完成。
  • 详细demo如下:
<!--demo.html-->
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>同一个svga动画在6个不同位置都循环播放</title><link rel="stylesheet" href="demo.css">
</head>
<body><div class="whitecaosvga"></div><div class="whitecaosvga"></div><div class="whitecaosvga"></div><div class="whitecaosvga"></div><div class="whitecaosvga"></div><div class="whitecaosvga"></div><!-- 一定不要忘了引入svga文件哟 --><script src="https://cdn.jsdelivr.net/npm/svgaplayerweb@2.1.0/build/svga.min.js"></script><script src="demo.js"></script>
</body>
</html>
/*demo.css*/
* {padding: 0;left: 0;
}
.whitecaosvga {width: 218px;height: 173px;
}
/*demo.js*/
window.addEventListener('load', function() {var log = console.log || window.console.log;var $ = document.querySelector.bind(document);var $$ = document.querySelectorAll.bind(document);var whitecaosvga = $$('.whitecaosvga');var playerswc = [];var parserswc = [];for(var i = 0; i < 6; i++) {playerswc[i] = new SVGA.Player(whitecaosvga[i]);parserswc[i] = new SVGA.Parser(whitecaosvga[i]);}var URLS = ['https://ares.kktv8.com/kktv/resource/2021-05-13/20210513101721_470.svga',]for(var i = 0; i < 6; i++) {svgaTimes(playerswc[i], parserswc[i], URLS[0], 0);}/**引入控制动画播放次数的函数 *//**svga播放1次还是循环播放, times为0 则表示无限循环播放, times为1 则表示只播放1次 */function svgaTimes(player, parser, url, times) {function svgaAnimation(player, parser, url, times){parser.load(url,function(videoItem){player.loops = times;player.setVideoItem(videoItem);player.clearsAfterStop = false;  //默认是清空画布 ,这边设置不清空画布player.startAnimation();},function(err){console.log("svga播放失败");})}svgaAnimation(player, parser, url, times);}
})

这篇关于简单说说svga的应用,留个案例自己用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942298

相关文章

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.