【Anime.js】——Anime.js源码之引擎的理解

news2024/12/24 3:29:26

一、Anime.js整体结构

Anime.js的强大之处在于代码量非常少,但功能却非常强大。让我们一起来探索Anime.js源码的核心吧~

Anime.js之所以能如此强大主要是因为它的代码结构设计的非常巧妙合理,所以我们想要掌握Anime.js的核心,首先我们要了解它的结构。

Anime.js结构如下图:

橘色的方块是浏览器提供的API。下面三个蓝色的 方块是Anime.js自己实现的方法。

我们会通过下面一一解读并实现。


 二、Anime.js——engine()引擎的实现

先了解一下什么是requestAnimationFrame()方法

语法:

window.requestAnimationFrame(callback);

  window.requestAnimationFrame(callback) 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。

该方法需要传入一个回调函数callback作为参数,该回调函数会在浏览器下一次重绘之前执行。

callback内部还接受一个参数,该参数表示开始去执行回调函数的时刻。

备注: 若想在浏览器下次重绘之前继续更新下一帧动画,那么回调函数自身必须再次调用 window.requestAnimationFrame()

 也就是说:

window.requestAnimationFrame()是创建了一个方法去等待执行。

既然有等待,那么也就会有取消。 window.cancelAnimationFrame() 以取消回调函数。window.requestAnimationFrame()会返回一个ID,将这个ID传给window.cancelAnimationFrame()。

engine()引擎的实现:

为什么使用闭包?

引擎engine的方法和动画anime的方法,没有放在一起,这样我们就可以多次调用 anime方法,这就意味着调用一个anime方法就针对一个引擎,但是他们调用的都是同一个方法,那么如何区分开呢?使用闭包,就可以创建不同的内存块,这样就将不同的anime方法对应不同的引擎。

效果:

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

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

相关文章

CUDA入门和网络加速学习(四)

0. 简介 最近作者希望系统性的去学习一下CUDA加速的相关知识,正好看到深蓝学院有这一门课程。所以这里作者以此课程来作为主线来进行记录分享,方便能给CUDA网络加速学习的萌新们去提供一定的帮助。 1. Cublas概念 cuBLAS是一个BLAS的实现,…

低代码常见场景【下】|行业示例

全文 3131 字 阅读时间约 9 分钟 本文首发于码匠技术博客 目录 低代码的行业示例 低代码在业务用例中的优势 关于码匠 阅读完上一篇文章后(低代码用例【上】|如何解决业务问题),想必您已经对低代码的通用用例以及低代码如何解…

PolarDB-X源码解读:DDL的一生(下)

概述 在《DDL的一生(上)》中,我们以添加全局二级索引为例,从DDL开发者的视角介绍了如何在DDL引擎框架下实现一个逻辑DDL。在本篇,作者将从DDL引擎的视角出发,向读者介绍DDL引擎的架构、实现,以…

应用于高速收发模块的并行光学WDM波分光学技术

光模块的传输距离分为短距、中距、长距。通常短距离传输是指2km以下的传输距离,中距为10-20km。≥30km的则为长距离传输。根据不同的传输距离,光模块类型分为SR(100m)、DR(500m)、FR(2km&#x…

实战三十二:基于knn算法的用户购物消费预测代码+数据

K近邻算法通过计算被分类对象与训练集对象之间的距离,确定其k个临近点,然后使用这k个临近点中最多的分类作为分类结果。 如上图,当K=3时,它会被分类为 Class B。因为K=3时,3个临近点里有2个是B类的。 同理,K=7时它会被分类为 Class A,因为K=7时,7个临近点里4个是A类的…

Clion开发stm32之下载程序记录

Clion开发stm32之下载程序 前提条件 安装openocd安装clion安装arm-gcc环境安装 MinGW(或Mysys2) 注意事项 !!! 开发路径必须要选择英文路径(中文路径会编译不通过的) 说明 这里为了在之后的项目里面使用配置文件。我们需要到openocd提供的board目录下添加自己的配置信息(…

gcc编译

gcc编译可执行程序有4个步骤:预处理、编译、汇编、链接。编译阶段消耗时间、系统资源最多。 从源文件hello.c到目标可执行文件hello,可以按照下面的执行命令,一步一步生成。 gcc -E hello.c -o hello.i gcc -S hello.i -o hello.s gcc -c he…

信息采编功能扩展开发心得

AEAI Portal门户为前端页面集成层而设计,在使用上简单、便捷,即使是非技术人员,通过操作文档也能够很好地将网站配置出来,不需要自身有很强的代码能力。同时门户平台搭配数通畅联的其他产品和组合方案,能够帮助企业快速…

nodejs+vue080大学社团管理系统

本系统主要有社团成员,社团团长和管理人员三个角色。 社团成员可以查看。新闻公告招新信息,并可在招新信息中申请加入喜欢的社团。可以在社团活动中申请自己想要参加的社团活动。 社团团长可以对自己所负责的社团内容进行管理。 管理人员可以对整个系统进…

kafka 的使用原理及通过spring-kafka 自定义封装包的原理

目录: Kafka 封装包接入 1.Kafka 工作原理2.Spring Kafka 介绍3. kafka封装包的设计及使用 Kafka 封装包接入 1.Kafaka 工作原理 1).kafka 的定义: 消息队列的两种模式: 1).点对点模式(一对一,消费者主动拉取数据&…

Arduino框架下联盛德W801开发环境搭建教程

Arduino框架下联盛德W801开发环境搭建教程联盛德W801拥有自己的SDK集成开发工具,能做到这一点非常令人敬佩和了不起。国内好多芯片厂商都需要依托第三方开发工具集来实现对自己产品的开发。多元化开发方式可以满足不同层次开发人员的需求。对于芯片本身来说&#xf…

机器学习100天(十一):011 回归模型评估指标

机器学习100天,今天讲的是:线性回归评估指标! 一、哪个模型更好? 我们之前已经对房价预测的问题构建了线性模型,并对测试集进行了预测。 如图所示,横坐标是地区人口,纵坐标是房价,红色的点是实际样本分布。 使用不同的算法或策略构建了两个线性回归模型,如图,分别是…

Web3 的开发者,如何评估以及选择调用链上数据的解决方案

FP是链上数据分析平台以及数据处理基础设施,使命是让链上数据分析以及使用随手可得。目前,Footprint 从 22 条公链上收集、解析和清理数据,把无语义以及无序的链上数据,转化成让用户能使用无代码拖放界面、SQL等多种形式构建图表以…

TestStand-用户界面

文章目录简易用户界面全功能用户界面除序列编辑器外&#xff0c;TestStand自带的两类用户界面&#xff0c;分别是SimpleUI&#xff08;简易用户界面&#xff09;及Full-Featured UI&#xff08;全功能用户界面&#xff09;。简易用户界面 简易用户界面的源代码位于< TestSt…

[附源码]计算机毕业设计Python的专业技能认证系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

分享:广电用户服务大数据解决方案

1 方案背景 随着三网融合的深入推进&#xff0c;跨域竞争激烈&#xff0c;电信运营商、互联网企业、硬件设备商以及内容生产商等都将自身定位于视频产业的参与者并获取相应价值&#xff0c;视频服务已经不再成为广电网络运营商的专利&#xff0c;整个视频产业已经开始新一轮颠…

Understanding and Increasing Efficiency of Frank-Wolfe Adversarial Training

AT存在灾难性的过拟合&#xff0c;在训练过程中对抗精度下降&#xff0c;尽管已经提出了改进&#xff0c;但它们增加了训练时间&#xff0c;鲁棒性与多步 AT 相去甚远。我们开发了一个使用 FW 优化 (FW-AT) 进行对抗训练的理论框架&#xff0c;揭示了损失情况与 ℓ∞ FW 攻击的…

vue - vue中的publicPath讲解

vue.config.js里面的publicPath是部署应用包时的基本 URL&#xff1b; 从 Vue CLI 3.3 起baseUrl已被publicPath替代&#xff1b; 如果想要了解vue的环境变量 process.env 可以阅读这篇文章&#xff1a; vue中的process.env.NODE_ENV讲解 1&#xff0c;publicPath publicPath是…

七、ref引用与数组的常用方法

一、ref 引用 1.1、什么是 ref 引用 ref 用来辅助开发者在不依赖于jQuery的情况下&#xff0c;获取 DOM 元素或组件的引用。 每个vue的组件实例上&#xff0c;都包含一个$refs对象&#xff0c;里面存储着对应的 DOM 元素或组件的引用。默认情况下&#xff0c;组件的$refs指向…

语音识别芯片LD3320介绍

语音识别芯片LD3320简介 LD3320 芯片是一款“语音识别”芯片,集成了语音识别处理器和一些外部电路&#xff0c;包括AD、DA 转换器、麦克风接口、声音输出接口等。LD3320不需要外接任何的辅助芯片如Flash、RAM 等&#xff0c;直接集成在LD3320中即可以实现语音识别/声控/人机对…