1、首先在react项目中安装下第三方包svgaplayerweb
yarn add svgaplayerweb -D
or
npm i svgaplayerweb -D
2、存放svga资源文件source.js
export const svga = {
"sky":'sky.svga',
}
3、封装好的svga.js 文件
import {
svga
} from './source.js';
const SVGA = require('svgaplayerweb')
var svgaParser = new SVGA.Parser();
const svgaMap = new Map()
export const loadSVGA = (name) => {
if (!svgaMap[name]) {
svgaMap[name] = new Promise((resolve, reject) => {
svgaParser.load(svga[name], (videoItem) => {
svgaMap[name] = videoItem
resolve(videoItem)
}, (err) => {
reject(err)
})
})
}
return svgaMap[name]
}
export const getSVGA = async (name, className, frame = 0, callback, play = true, loops, clearsAfterStop) => {
const videoItem = await loadSVGA(name)
var svga = new SVGA.Player(className);
if (loops)
svga.loops = loops;
svga.clearsAfterStop = false
if (clearsAfterStop)
svga.clearsAfterStop = clearsAfterStop;
svga.setVideoItem(videoItem);
svga.stepToFrame(frame, play)
svga.onFinished(() => {
if (typeof callback == "function") {
callback()
}
})
return svga
}
4、用法
getSVGA("sky", ".warp", 0, null)
getSVGA(资源名, 类名, 0, null)