帧动画实现

news2025/1/22 9:17:37

背景:

pag实现痛点  文档:libpag参考文档
1.打包依赖的类型缺失问题
2.pagview初始化文件过大,影响小程序打包
3.兼容性较差
关键帧动画实现痛点:

当关键帧变化过多的时候,无法准确分辨出需要写出多少个关键帧,以及各个关键帧的具体参数,会造成动画播放效果有“卡顿感”

实现方案:一、将 AE 制作的动画导出为 CSS 代码

如何安装

下载 BX-AE2CSS.jsx 文件,在这里右键 - 链接另存为.
打开AE, 点击 文件->脚本->运行脚本文件... 然后选择刚才下载的 BX_AE2CSS.jsx。

或者可以复制 BX_AE2CSS.jsx 到AE的脚本文件夹:

Windows:
C:\Program Files\Adobe\Adobe After Effects <版本>\Support Files\Script\
Mac:
/Applications/Adobe After Effects <版本>/Scripts/

这样你就可以从 `文件`->`脚本` 中直接选择`BX_AE2CSS.jsx`了

详细步骤

注意事项

1、目前只能导出纯色层和图像图层的「位移、旋转、缩放、透明度」动画,支持表达式和父子级。复杂动画请用精灵图方式导出。
2、不建议导出太长的动画,数据量会很大。

如何使用

1、在 AE合成 中选中需要导出的图层,并打上对应的「导出标记」。
2、若图层是图像图层(png、jpg)或者是希望导出为图像的预合成,使用「标记 CSS」按钮标记;若希望导出精灵图,请将精灵图动画放进预合成,并使用「标记 精灵图」按钮来标记。
3、确认设置无误后,按下「导出 CSS」按钮以导出动画。

详细操作可以观看这个视频
BX-AE2CSS 演示_哔哩哔哩_bilibili

参数说明

插值方式 - 默认为「steps(1)」即「不插值」,配合默认的逐帧导出可以避免一些跳帧现象。如需在导出后手工调整关键帧可选择其他方式,详见 CSS Animation 说明。
循环次数 - 顾名思义,默认为无限循环。
动画方向 - 决定动画是正着播放还是反向。
动画填充模式 - 动画播放开始和结束时的行为,具体参考 CSS Animation 官方说明。
自定义前缀 - 导出的类名格式为「BX_+前缀+_Class+图层序号」,加入自定义前缀可防止与项目中其他类名冲突。默认为空。
逐帧导出 - 由于能力有限暂时只能逐帧导出动画,导出的代码会稍微冗长一点。后续版本将尝试加入自动贝塞尔插值以优化导出的代码。
独立CSS文件 - 是否生成独立的 CSS 文件。也可以导出整体的 Html 预览代码。

精灵图参数

最大宽度 - 拼合后的精灵图文件最大宽度,超过这个值将会换行。注意拼好的图最大只能到 30000x30000 像素,若超过这个值将导出失败。
跳过多少帧 - 减少精灵图尺寸,跳过帧越多动画越卡顿。
完整长度/根据工作区裁剪 - 如果精灵图动画与合成工作区时长不一致,「完整长度」模式将会保持精灵图动画的时长,「根据工作区裁剪」则将精灵图动画的时间范围限制在合成工作区内。

参考案例

1、https://raw.githubusercontent.com/bigxixi/ReadMe-Resources/master/ae2css/basicdemo.gif

[AE 工程文件] [在线演示]

2、https://raw.githubusercontent.com/bigxixi/ReadMe-Resources/master/ae2css/lanterndemo.gif

[AE 工程文件] [在线演示]

3、https://raw.githubusercontent.com/bigxixi/ReadMe-Resources/master/ae2css/bikingdemo.gif

[AE 工程文件][ 在线演示]

注意事项

直接导出的css样式如果关键帧过多而动画速度曲线为step(步长)的话,ios系统可能会造成卡顿,大概率原因是因为ios没触发智能补帧逻辑,这时候改插值器就ok ,将step改为ease就可以解决“卡顿感”。

动画优化:

一、硬件加速

transform: translate3d(0, 0, 0);

will-change:transform;

二·、监听动画事件(开始-结束)

动画执行过程中使用 bindtransitionend bindanimationstart bindanimationiteration bindanimationend 来监听动画事件

bindtransitionend:监听CSS 渐变结束或 wx.createAnimation 结束一个阶段

注意:bindtransitionend监听的是wx.createAnimation 结束一个阶段而不是整个动画的结束(也就是一个step()结束)

bindanimationstart:监听CSS 动画开始

bindanimationiteration:CSS 动画结束一个阶段(循环动画时使用)

bindanimationend:CSS 动画结束

注意:bindanimationstart bindanimationiteration bindanimationend无法监听到wx.createAnimation创建的动画

注:这几个事件都不是冒泡事件,需要绑定在真正发生了动画的节点上才会生效。

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

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

相关文章

umi 中的路由切换动画如何实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 umi路由切换动画步骤 1、查看node版本2、搭建脚手架①.找个地方建一个空目录2.搭建umi脚手架3.正式配置路由动画1.1 在src文件目录下创建一个 layouts文件夹&#xff0c;在文…

【疑难杂症】用户无法使用sudo提权

目录 用户无法使用sudo提权 用户无法使用sudo提权 第一步&#xff1a;切换成超级用户。 su 第二步&#xff1a;打开/etc/sudoers文件。 vim /etc/sudoers 第三步&#xff1a;将用户添加到文件力。 这样就得到解决了......

404 not found nginx(dist打包后,刷新和跳转都是404 not found nginx的问题) 解决方案(打包发布在服务器)

当我们执行了yarn run build之后&#xff0c;生成dist文件 我们将代码放入nginx-1.24.0下面的html中 然后我们就配置conf文件下的nginx.conf 配置方面不介绍了&#xff0c;主要问题是因为没有加这句话 问题分析 index index.htm index.html; index 就是根目录&#xff0c;也就…

Android获取 H264视频流中的SPS和PPS

代码其实很简单&#xff0c;主要是要知道H264帧数据结构。分析H264码流结构的文章一大把&#xff0c;自己网上搜索一下就知道了。 背景&#xff1a; h264aac封装mp4格式的时候&#xff0c;需要获取视频流的sps,pps。 封装mp4文件格式的大体方案 使用 MediaExtractor 和 Medi…

Python实现机器学习(上)— 基础知识介绍及环境部署

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本门课程将介绍人工智能相关概念&#xff0c;重点讲解机器学习原理机器基本算法&#xff08;监督学习及非监督学习&#xff09;。使用python&#xff0c;结合sklearn、jupyter-notebook进行编程&#xff0c;介绍iris、匹马…

【Mysql系列】(二)日志系统:一条更新语句是如何执行的

有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top 这篇文章是从Github ReadMe拷贝的&#xff0c;内容实践下载是没问题的&#xff0c;能够正常发送短信&#xff0c;而且也不需要服务器&#xff0c;本地…

语言基础篇14——Python源文件组织结构,模块与包、命名空间与作用域的奥秘

源文件组织结构 模块与包 模块&#xff0c;module 一个文件&#xff0c;包含Python源码&#xff0c;以.py为后缀 包&#xff0c;package 结构化模块&#xff0c;一个文件夹&#xff0c;包含__init__.py文件、若干.py文件和若干文件夹 module对象 模块和包被导入后为modu…

保姆级-微信小程序开发教程

一&#xff0c;注册微信小程序 如果你还没有微信公众平台的账号&#xff0c;请先进入微信公众平台首页&#xff0c;点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信&#xff0c;我们选择 “小程序” 即可。 接着填写账号信息&#x…

洗衣洗鞋小程序干洗店洗衣店上门取衣门店管理系统开发定制

校园洗衣洗鞋软件是一款非常优质的校园洗护服务软件&#xff0c;软件功能非常强大&#xff0c;学生们可以通过软件预约洗衣服务&#xff0c;支持上门取送&#xff0c;还能够浏览洗衣产品商城&#xff0c;操作非常便捷&#xff0c;感兴趣的朋友快来体验吧&#xff01; 后台管理…

开发板插入sd/tf卡后自动挂载

测试平台-hisi-dv500 要在Linux系统上实现TF卡&#xff08;Micro SD卡&#xff09;插入后自动挂载&#xff0c;类似于SD卡/TF卡插入也会触发内核事件,你可以使用udev工具来监控并处理这些事件,创建一个udev规则文件来捕获TF卡插入事件. 1:创建一个udev规则文件&#xff0c;例…

飞书即时消息无需API开发连接Cohere,打造飞书AI智能问答助手

飞书即时消息用户使用场景&#xff1a; 许多企业都在使用飞书系统进行协同办公&#xff0c;而现在有了Cohere大语言模型技术&#xff0c;能够根据用户的提问来自动产生回答&#xff0c;无需人为干预。对于企业负责人来说&#xff0c;他们认为如果将Cohere技术融入到飞书机器人中…

SpringBoot+jSerialComm实现Java串口通信 读取串口数据以及发送数据

记录一下使用SpringBootjSerialComm实现Java串口通信&#xff0c;使用Java语言开发串口&#xff0c;对串口进行读写操作,在win和linux系统都是可以的&#xff0c;有一点好处是不需要导入额外的文件。 案例demo源码&#xff1a;SpringBootjSerialComm实现Java串口通信 读取串口…

easypoi导入数值精度丢失

记录一下easypoi导入数值,精度丢失的解决方案 1.导入的excel字段如图 2.easypoi解析CellValueService部分源码: 这个方法拿到的原始数据如图&#xff1a; 解决方法&#xff1a; 1.统一处理方式&#xff1a;在解析的时候使用DecimaFormat进行数据格式化 //格式化为6为小数 De…

Day57|leetcode 647. 回文子串、516.最长回文子序列

leetcode 647. 回文子串 题目链接&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 视频链接&#xff1a;动态规划&#xff0c;字符串性质决定了DP数组的定义 | LeetCode&#xff1a;647.回文子串_哔哩哔哩_bilibili 题目概述 给你一个字符串 s &#xff0c;…

使用动态住宅代理还能带来哪些好处?

一、什么是动态住宅代理ip 动态住宅代理是一种代理技术&#xff0c;它利用代理服务器中转用户和目标服务器之间的网络流量&#xff0c;实现用户真实位置的屏蔽。代理提供商会有自己的ip大池子&#xff0c;当你通过代理服务器向网站发送请求时&#xff0c;服务器会从池子中选中…

Spring系列文章:Spring6集成MyBatis3.5

1、引入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.2</version></dependency><dependency><groupId>org.mybatis</groupId><artif…

jsp页面出现“String cannot be resolved to a type”错误解决办法

篇首语&#xff1a;小编为大家整理&#xff0c;主要介绍了jsp页面出现“String cannot be resolved to a type”错误解决办法相关的知识&#xff0c;希望对你有一定的参考价值。 jsp页面出现“String cannot be resolved to a type”错误解决办法 解决办法&#xff1a; 右键项目…

软考高级架构师下篇-14面向服务架构设计理论

目录 1. 引言2. SOA的相关概念3. SOA的发展历史4. SOA的参考架构5. SOA 主要协议和规范6. SOA设计的标准要求7. SOA的作用与设计原则8. SOA的设计模式9. SOA构建与实施10. 前文回顾1. 引言 在面向服务的体系结构(Service-Oriented Architecture,SOA)中,服务的概念有了延伸…

详解:API开发【电商API封装商品数据SKU接口的开发接入】

电商API开发8.1 RESTful API的设计8.2 API的路由和控制器8.3 API的认证和授权 RESTful API的设计 RESTful API是一种通过HTTP协议发送和接收数据的API设计风格。它基于一些简单的原则&#xff0c;如使用HTTP动词来操作资源、使用URI来标识资源、使用HTTP状态码来表示操作结果等…

Java多线程(四)锁策略(CAS,死锁)和多线程对集合类的使用

锁策略&#xff08;CAS&#xff0c;死锁&#xff09;和多线程对集合类的使用 锁策略 1.乐观锁VS悲观锁 2.轻量级锁VS重量级锁 3.自旋锁VS挂起等待锁 4.互斥锁VS读写锁 5.可重入锁vs不可重入锁 死锁的第一种情况 死锁的第二种情况 死锁的第三种情况 CAS 1.实现原子类 …