web端动效 PAG

news2024/12/23 5:29:13

之前写过一篇lottie动效的文章:web端动效 lottie-web 使用,本篇写一下PAG-web的基础使用。

PAG是腾讯开发,支持移动端、桌面端以及Web端的动效工作流解决方案。目标是降低或消除动效相关的研发成本,能够一键将设计师在 AE(Adobe After Effects)中制作的动效内容导出成素材文件,并快速上线应用于几乎所有的主流平台。

  1. 安装 官方文档
yarn add libpag
  1. vue.config.js 加入以下代码
// ...
const path = require('path')
const CopyWebpackPlugin = require('copy-webpack-plugin')

module.exports = defineConfig({
 // ...
 configureWebpack: {
   plugins: [
     // ...
     new CopyWebpackPlugin({
       patterns: [{
         from: path.resolve(__dirname, './node_modules/libpag/lib/libpag.wasm'),
         to: './js/'
       }]
     })
   ]
 }
})

简单的接入示例和 Vue / React / PixiJS 等配置示例, 可以点击 这里 查看。

  1. 使用
    创建一个组件MyPag/index.vue
<template>
  <canvas class="pag" id="pag"></canvas>
</template>

<script>
import { PAGInit } from 'libpag'

export default {
  data () {
    return {
      pagView: null
    }
  },
  created () {
    this.initPag()
  },
  methods: {
    async initPag () {
      const url = '/static/like.pag' // pag文件放在了静态文件夹下 /public/static
      const PAG = await PAGInit()
      const { PAGFile, PAGView } = PAG

      // 示例 fetch 请求
      const buffer = await fetch(url).then(res => res.arrayBuffer())
      const pagFile = await PAGFile.load(buffer)

      document.getElementById('pag').width = pagFile.width()
      document.getElementById('pag').height = pagFile.height()
      this.pagView = await PAGView.init(pagFile, '#pag')
      this.pagView.setRepeatCount(0)
      this.pagView.play()
    }
  }
}
</script>

<style lang="scss" scoped>
.pag {
  width: 200px;
  height: 200px;
}
</style>

示例中pag文件路径,测试素材下载
在这里插入图片描述
一个基本的pag动效就出来了
在这里插入图片描述
结合实例方法,加入简单的鼠标事件:移入播放,移出暂停。查看API文档

<template>
  <div class="lottie" @mouseenter="onMouseenter" @mouseleave="onMouseleave"></div>
</template>

<script>
import lottie from 'lottie-web'

export default {
  props: {
    animationData: {
      type: Object,
      required: true
    },
    autoplay: {
      type: Boolean,
      default: true
    },
    loop: {
      type: Boolean,
      default: true
    }
  },
  data () {
    return {
      lottie: null
    }
  },
  mounted () {
    this.intLottie()
  },
  methods: {
    intLottie () {
      let { animationData, autoplay, loop } = this
      if (!autoplay) {
        loop = false
      }
      this.lottie = lottie.loadAnimation({
        container: this.$el, // 渲染容器
        renderer: 'svg', // 渲染方式
        loop, // 是否循环
        autoplay, // 自动播放
        animationData // lottie json文件
      })
    },
    onMouseenter () {
      if (!this.autoplay) {
        this.lottie.setDirection(1)
        this.lottie.play()
        this.lottie.addEventListener('complete', e => {
          this.lottie.stop()
        })
      }
    },
    onMouseleave () {
      this.lottie.removeEventListener('complete')
      if (!this.autoplay) {
        this.lottie.setDirection(-1)
      }
    }
  }
}
</script>

<style lang="scss" scoped>
.lottie {
  width: 200px;
  height: 200px;
}
</style>

在这里插入图片描述

PAGViewer

目前 PAG 预览支持 Web、macOS 和 Windows 平台,其中 Web 平台为一个页面,macOS 和 Windows 平台为桌面端应用。进入下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1010224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VoIP之IP直呼

在VoIP应用场景中&#xff0c;有一种功能叫IP直呼&#xff0c;也称为IP直拨。 就是两个SIP终端或终端和服务器之间&#xff0c;通过呼叫&#xff08;Invite)对方IP地址实现音视频通话的功能。 抓包如下&#xff1a; 与常见的SIP账号呼叫的区别是from/to字段没有账号&#xff0…

163邮箱开通发件功能

点击设置 查看详情 开启这个功能&#xff0c;如下 开通IMAP/SMTP服务 开通POP3/SMTP服务完成了 设置邮箱完成。

C++--day7

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 #include <iostream>using namespace std; class myvector { private:int *num;int size;int top0; public://有参构造函数myvector(int s,int val){int *tmpnew int [s];sizes;for(int i0;i<s;…

基于FPGA的图像sobel锐化实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的仿真结果导入到matlab显示图像效果 2.算法运行软件版本 MATLAB2022a,vivado2019.2 3.部分核心程序 .................................…

数据结构之洗牌算法

洗牌算法 1.买一副牌(生成一副牌)2.洗牌3.揭牌完整代码 1.买一副牌(生成一副牌) 2.洗牌 3.揭牌 完整代码 card中的代码: cardDemo中的代码 测试类代码

常微分方程的基本概念(二)

目录 微分方程的解 微分方程的通解 微分方程的特解 微分方程的初始条件 积分曲率 微分方程的解 微分方程的解是指满足给定微分方程的函数或函数集合。微分方程通常描述了一个函数与其导数之间的关系&#xff0c;解是满足这种关系的函数或一组函数。 微分方程可以分为多个…

部署ZFile在线网盘

部署ZFile应用 1.安装依赖 在部署ZFile应用之前&#xff0c;需要安装环境依赖。 yum install -y java-1.8.0-openjdk unzip 2.创建安装部署目录 创建安装目录&#xff0c;用于部署ZFile。 [roothecs-4981 ~]# mkdir -p /data/zfile [roothecs-4981 ~]# cd /data/zfile/ [ro…

新版原型和原型链详解,看完整个人都通透

了解原型、原型链前需要先了解构造函数&#xff0c;new操作符 构造函数 构造函数是一种特殊的函数&#xff0c;主要用来初始化对象&#xff0c;即为对象成员变量赋初始值&#xff0c;它总与 new 一起使用。我们可以把对象中一些公共的属性和方法抽取出来&#xff0c;然后封装到…

idea2023全量方法debug

为什么要全量debug 刚上手项目或者研读开源项目源码的时候&#xff0c;我们对项目的结构&#xff0c;尤其是功能链路非常陌生&#xff0c;想要debug根本不知道断点打在哪&#xff0c;光靠文件名类名或者方法名去猜也不是个事。这时候只要配置一下全量debug模式&#xff0c;就能…

解决jupyter找不到虚拟环境的问题

解决jupyter找不到虚拟环境的问题 使用jupyter只能使用base环境&#xff0c;不能找到自己创建的虚拟环境。如下图&#xff0c;显示的默认的虚拟环境base的地址。 如何解决这个问题&#xff1f;需要两个步骤即可 1 . 在base环境中安装nb_conda_kernels这个库 activate base c…

ARM上市,冲击2023年美股最大IPO

KlipC报道&#xff1a;ARM于美国时间9月14日在纳斯达克挂牌上市。 KlipC的合伙人表示&#xff1a;“据媒体报道&#xff0c;位于发行价指导区间47至51美元的顶端&#xff0c;知情人士称&#xff0c;ARM曾考虑将IPO发行价确定为52美元&#xff0c;但随后又降低到了51美元&#x…

数学实验-数列与级数(Mathematica实现)

一、实验名称&#xff1a;数列与级数 二、实验环境&#xff1a;Mathematica 10.3软件 三、实验目的&#xff1a;本实验通过Mathematica 10.3软件编程演示Fibonacci数列、调和级数的函数图像及函数关系式&#xff0c;通过Mathematica 10.3软件发现数列与极限状态的性质&#x…

C++与JS实现WebSocket通信(C++服务端JS客户端)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

即时通讯如何做好安全防御

即时通讯工具该怎么样做好防御可以分为以下几点 1、清理安全漏洞定期定时的扫描服务器的网络节点&#xff0c;排查网络中的安全漏洞隐患&#xff0c;及时清理安全漏洞。避免这些漏洞被黑客利用&#xff0c;攻击服务器。 2、设置防火墙在服务器的骨干节点配置防火墙&#xff0c;…

前端面试要点

0914 JScript深拷贝和浅拷贝&#xff08;js解构赋值算哪个&#xff1f;&#xff09; 深拷贝和浅拷贝 回流和重绘 回流和重绘 webpack打包流程 Webpack打包 虚拟DOM 虚拟DOM git合并分支 git合并分支 CSS盒子模型 CSS盒子模型 0911 WebPack分包 webpack分包 ts泛型 ts泛型 优化…

java包的介绍

包 包就是文件夹&#xff0c;用来管理各种不同功能的 java 类&#xff0c;方便后续管理 包名的规则: 公司域名反写&#xff0b;包的作用&#xff0c;需要全部英文小写&#xff0c;见名知意。 导包的规则 使用同一个包中的类时&#xff0c;不需要导包。使用 java. Lang 包中的…

9月13日上课内容 第三章 ELK日志分析系统

本章结构 ELK日志分析系统简介 ELK日志分析系统分为 Elasticsearch Logstash Kibana 日志处理步骤 1.将日志进行集中化管理 2.将日志格式化(Logstash) 并输出到Elasticsearch 3.对格式化后的数据进行索引和存储 (Elasticsearch) 4.前端数据的展示(Kibana) Elasticsearch介…

【深度学习】 Python 和 NumPy 系列教程(十六):Matplotlib详解:2、3d绘图类型(2)3D散点图(3D Scatter Plot)

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 线框图&#xff08;Wireframe Plot&#xff09; 2. 3D散点图&#xff08;3D Scatter Plot&#xff09; 一、前言 Python是一种高级编程语言&#xff0c;由Guido van Ross…

窗帘导轨轮小柱

实物 difference(){union(){cylinder(1, 3.5, 3.5, $fn360);cylinder(8, 2, 2, $fn360);}rotate([90,0,0])translate([0,6,-3])cylinder(6, 1, 1, $fn360); }

STM32WB55开发(3)----配置串口打印Debug调试信息

STM32WB55开发----3.配置串口打印Debug调试信息 概述硬件准备视频教学样品申请选择芯片型号配置时钟源配置时钟树RTC时钟配置查看开启STM32_WPAN条件配置HSEM配置IPCC配置RTC启动RF开启蓝牙开启串口调试配置蓝牙参数设置工程信息工程文件设置Keil工程配置代码配置结果演示 概述…