WEB播放SVGA

本文介绍的是web页面,使用npm插件播放svga的实例,基本上做web的都会遇到svga动画的播放,因为svga相对来说效果好,内存占用小,比较轻量。在使用svga的插件时,调整页面样式显示比较繁琐,本篇文章就是封装一次插件,可以跟写普通元素一样,进行样式调整。

注:该插件支持远程资源,不支持本地。

1、安装插件

npm insall svgaplayerweb

2、封装插件

<template>
    <div 
    :id="svId" 
    :class="className || ''" 
    :style="styleObj || {}"
    >
        
    </div>
</template>

<script>
 import SVGA from "svgaplayerweb";
let svgaId = 0; // id序号

export default {
    props:[
        "src",              // String  资源路径 http|https 开头 测试地址: http://sl.file.diaodiaosocial.com/1595325777179.svga
        "className",         // String class-name 静态class 
        "loops",            // Number  循环播放次数 默认为最大正整数
        "onFrame",          // Function 每帧执行回调
        "styleObj",         // Object  style-obj 绑定的style样式
        "mode",             // String  可选 "ScaleToFill" | "AspectFill" | "AspectFit"
        "onlyTag"           // String  only-tag 唯一标识,每帧/执行完毕 函数回调时标识,用户同一动画,多出显示
    ],

    data() {
        return {
            svId: `svga-id-${svgaId++}` // 动态生成id,处理页面多个svga的情况
        }
    },

    created() {
        this.$nextTick(()=>{
            try {
            	// 创建player
                let player = new SVGA.Player(`#${this.svId}`);
                player.loops = this.loops || Number.MAX_SAFE_INTEGER;
                player.clearsAfterStop=false;
                // 创建解析者
                let parser = new SVGA.Parser(`#${this.svId}`); 
                parser.load(this.src, (videoItem)=> {
                    player.setVideoItem(videoItem);
                    player.setContentMode(this.mode || "AspectFit");
                    player.startAnimation();
                    player.onFinished(() => this.onFinished?.(this.onlyTag));
                    player.onFrame((frame) => this.onFrame?.(frame,this.onlyTag));
                }); 
            } catch (error) {
                console.error(error);
            }
        });
        
    },
}
</script>

<<style lang="less">
    
</style>

3、组建引入

将该内容放到vue入口文件,也就main.js中,进行引用

// 引入自定义的组件
import SvgaComponent from "./SvgaComponent.vue";
import Vue from 'vue';

Vue.component('svga', SvgaComponent);

4、组件使用

 <svga :src="svgaSrc" class-name="svga-icon"></svga>
 // 根据自己页面定义样式
 .svga-icon {
    width: .13rem;
    height: .13rem;
}

以上就是对插件的封装与使用,基本上能满足项目内的需求,可以根据自己项目的需求进行改动,比如播发一次后自动销毁之类的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值