50行代码实现的高性能动画定时器 raf-interval
来源:互联网 发布:复杂网络的研究现状 编辑:程序博客网 时间:2024/06/11 03:30
写在前面
raf-interval 是基于 window.requestAnimationFrame() 封装的定时器。
- Github: https://github.com/dntzhang/raf-interval
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 拉取:
- https://unpkg.com/raf-interval@0.3.0/raf-interval.js
License
This content is released under the MIT License.
阅读全文
0 0
- 50行代码实现的高性能动画定时器 raf-interval
- 高性能定时器时间轮的实现
- 定时器Interval实现倒计时功能
- 实现达到 60FPS 的高性能交互动画
- 高性能的定时器设计---时间轮
- 高性能定时器
- 高性能服务器--定时器
- 使用epoll+时间堆实现高性能定时器
- 使用epoll+时间堆实现高性能定时器
- 基于web技术的高性能动画
- 定时器实现动画的一个例子
- Erlang gen_server实现定时器(interval)的几种方法及各自的优缺点?
- [Erlang09]Erlang gen_server实现定时器(interval)的几种方法及各自的优缺点?
- React之动画表现(CSS3 JS rAF)
- 多线程、高性能缓存服务实现代码
- 高性能 CSS3 动画
- 高性能 CSS3 动画
- 高性能 CSS3 动画
- Java日期格式与字符串的转换
- 全屏蒙板添加
- 版本比较工具类(通用)
- eclipse怎么更改存储位置
- Laravel之路由(Routes)
- 50行代码实现的高性能动画定时器 raf-interval
- 雷锋一键重装
- C#中常见的系统内置委托用法详解
- Stats背包(1.3 P77)
- a+b / a-b / a*b / a/b c++问题题解
- yii2的Console定时任务创建
- Yii2 ActiveRecord 添加额外属性
- 学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等)
- 深拷贝与浅拷贝