vue使用SVGA

 

背景vue2使用svga。

 

可用的JS库svga和svgaplayerweb

 

svga

import { Parser, Player } from 'svga'
<button @click="startPlayerSVGA">start</button>
<button @click="stopPlayerSVGA">stop</button>
<canvas class="learn-vga-container" id="svga-container"></canvas>

import { Parser, Player } from 'svga'

playerSVGA: null,
parserSVGA: null,


// 创建svga播放
    async creatPlayerSVGA(){
      this.parserSVGA = new Parser()
      const svga = await this.parserSVGA.load('/svg/index-01-an.svga')
      this.playerSVGA = new Player(document.getElementById('svga-container'))
      await this.playerSVGA.mount(svga)
      // console.log(this.playerSVGA)
      // this.playerSVGA.onStart = () => console.log('onStart')
      // this.playerSVGA.onResume = () => console.log('onResume')
      // this.playerSVGA.onPause = () => console.log('onPause')
      // this.playerSVGA.onStop = () => console.log('onStop')
      // this.playerSVGA.onProcess = () => console.log('onProcess', this.playerSVGA .progress)
      // this.playerSVGA.onEnd = () => console.log('onEnd')
      // 开始播放动画
      this.playerSVGA.start()
    },
    // 暂停svga
    stopPlayerSVGA(){
      this.playerSVGA.pause()
      // 继续播放动画
      // this.playerSVGA.resume()
    },
    // 重新开始svga
    startPlayerSVGA(){
      this.playerSVGA.start()
    },
    // 销毁svga
    destroyPlayerSVGA(){
      if (this.playerSVGA||this.parserSVGA) {  
        // 卸载动画资源,防止内存泄漏  
        this.parserSVGA.destroy()
        this.playerSVGA.destroy() 
        this.parserSVGA = null
        this.playerSVGA = null
      }  
    },
        
        
        
beforeDestroy() {  
    this.destroyPlayerSVGA()
    this.destroyPlayerSVGATwo()
    this.destroyPlayerSVGAThree()
}, 
 
 
 
 

svgaplayerweb

import SVGA from 'svgaplayerweb';
 
这个有个坑就是在销毁时需要清除调用的API居然是stopAnimation(true)
 
this.playerSVGA.stopAnimation(true)
this.playerSVGA.clearDynamicObjects()
this.playerSVGA.clear()  
this.playerSVGA = null;
 
 
posted @ 2024-04-17 19:51  泠风lj  阅读(64)  评论(0编辑  收藏  举报