博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
50行代码实现的高性能动画定时器 raf-interval
阅读量:6407 次
发布时间:2019-06-23

本文共 1017 字,大约阅读时间需要 3 分钟。

写在前面

raf-interval 是基于 window.requestAnimationFrame() 封装的定时器。

  • Github:

window.requestAnimationFrame() 方法告诉浏览器您希望执行动画,并请求浏览器调用指定的函数在下一次重绘之前更新动画。该方法将在重绘之前调用的回调作为参数。所以

如果您想在下一个重绘时为另一个框架设置动画,您的回调例程必须调用 requestAnimationFrame()。

如果你想做逐帧动画的时候,你应该用这个方法。这就要求你的动画函数执行会先于浏览器重绘动作。通常来说,被调用的频率是每秒60次,但是一般会遵循W3C标准规定的频率。如果是后台标签页面,重绘频率则会大大降低。

通过 raf-interval 我们可以把抽象的对象的自身的循环逻辑通过 setRafInterval 书写在自身的代码里,但是却执行在唯一的 ticker,这样逻辑不会被拆得支离破碎,更好维护方便扩展。

API

  • setRafInterval 开启定时器
  • clearRafInterval 清除定时器

和setInterval 和 clearInterval 用法一致!超级简便

特性

  • 和 setInterval clearInterval 一样的使用方式
  • 当用户切到其他tab自动停止循环,低功耗,更省电
  • 简单的API就能制作高性能丝般顺滑的的动画效果
  • 智能地停止的开启循环

使用

没有 raf-interval 之前:

var i = 0var interval = setInterval(function() {    console.log(i++)    if (i > 6) {        clearInterval(interval)    }},1000)

有了 raf-interval 之后:

var i = 0var rafInterval = setRafInterval(function() {    console.log(i++)    if (i > 6) {        clearRafInterval(rafInterval)    }},1000)

安装

$ npm install raf-interval

或者从 CDN 拉取:

License

This content is released under the License.

转载地址:http://hatea.baihongyu.com/

你可能感兴趣的文章
登录注册界面的传值
查看>>
如何修改计算列列名
查看>>
[2019.2.13]BZOJ4318 OSU!
查看>>
版本号带两个小数点的,如何比较大小?( NSStringCompareOptions )
查看>>
HashMap与HashCode
查看>>
QCustomplot使用分享(三) 图
查看>>
什么是java?
查看>>
office等资料下载
查看>>
[LeetCode]题解(python):149-Max Points on a Line
查看>>
WPF路径动画(动态逆向动画)
查看>>
ESXi 主机创建datastore失败
查看>>
day3-函数介绍
查看>>
Low Level Reader Protocol (LLRP) 简介
查看>>
[Micropython]TPYBoard v10x NRF24L01无线通讯模块使用教程
查看>>
mysql中show processlist过滤和杀死线程
查看>>
dxRangeTrackBar使用教程
查看>>
最新Sublime Text 2 激活 汉化
查看>>
spring为什么推荐使用构造器注入
查看>>
C# 使用反射 遍历输出 对象的属性
查看>>
基础数据类型之字典
查看>>