requestAnimationFrame使用示例详解

 更新时间:2023年02月21日 15:12:11   作者:和府面王  
这篇文章主要为大家介绍了requestAnimationFrame使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

requestAnimationFrame--use是什么

告诉浏览器用来执行一个动画,并且在下一次重绘之前调用其指定的回调函数取更新动画,所以该方法的参数就是一个回调函数,在下一次重绘时候调用。

回调函数

回调函数即是传入的callback,执行后其传入的参数为DOMhighResTimeStamp,表示当前回调函数执行时时间戳,单位毫秒。

调用频率

其回调函数执行次数为每秒60次,为啥是这个呢,因为在大多数浏览器种,这个频率大多都跟屏幕帧数刷新频率保持一致,即在高刷新的屏幕中会执行的更快。

返回啥

返回的是一个非零整数值,作为唯一标识,传给window.cancelAnimationFrame(),可用来清除取消回调函数。

如何用window.requestAnimationFrame(callback);

示例

可以看到浏览器在一直打印,这也就是类似动画的持续过程,一秒钟会输出60次。

那怎样让其停止,除了使用window.cancelAnimationFrame();官方指出了为了提高性能和电池寿命,当requestAnimationFrame()运行在后台标签页或者隐藏的iframe里,就会被暂停调用以提升性能。

多个运行情况

当一个页面有多个requestAnimationFrame时,运行情况又是怎样的呢

执行调试输出内容为

可以看出再同一毫秒时刻,两个方法会同步执行,可见并不存在先后的情况,其每次执行隔间时间戳近似等于 1000 / 60 = 16.666毫秒,这就意味页面加载一次,会一次性执行所有的requestAnimationFrame。

停止执行

cancelAnimationFrame

动画运用

效果如下图

总结

requestAnimationFrame是浏览器的一个宏任务,其用法也跟setTimeOut很相似,其执行的步骤是根据浏览器的绘制频率来的,采用系统的刷新间隔时间,可以保证在绘制的一次过程中只执行一次,确保了性能,不会出现卡顿和掉帧的情况,这样就确保了动画加载的流畅,同时也降低了cpu的消耗和内存占用,是canvas动画里面最常用的一种api。

以上就是requestAnimationFrame使用示例详解的详细内容,更多关于requestAnimationFrame使用的资料请关注脚本之家其它相关文章!

相关文章

  • javascript 判断是否是微信浏览器的方法

    javascript 判断是否是微信浏览器的方法

    这篇文章主要介绍了javascript 判断是否是微信浏览器的方法的相关资料,需要的朋友可以参考下
    2016-10-10
  • 微信小程序 Windows2008 R2服务器配置TLS1.2方法

    微信小程序 Windows2008 R2服务器配置TLS1.2方法

    微信小程序免费SSL证书https、TLS版本问题的解决方案《二十四》request:fail错误(含https解决方案)(真机预览问题把下面的代码复制到PowerShell里运行一下,然后重启服务器。# Enables TLS 1.2 on ...,需要的朋友可以参考下
    2016-12-12
  • Three.js添加阴影和简单后期处理实现示例详解

    Three.js添加阴影和简单后期处理实现示例详解

    这篇文章主要为大家介绍了Three.js添加阴影和简单后期处理实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • JS仿照3D手办模型展台实现示例详解

    JS仿照3D手办模型展台实现示例详解

    这篇文章主要为大家介绍了JS 实现伪3D手办模型展台示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • JavaScript实例 ODO List分析

    JavaScript实例 ODO List分析

    这篇文章主要介绍了JavaScript实例 ODO List分析,主要利用JavaScript、css、HTML等实例代码展开起内容的解析,需要的小伙伴可以参考一下
    2022-01-01
  • javascript使用btoa和atob来进行Base64转码和解码

    javascript使用btoa和atob来进行Base64转码和解码

    javascript原生的api本来就支持,Base64,但是由于之前的javascript局限性,导致Base64基本中看不中用。当前html5标准正式化之际,Base64将有较大的转型空间,对于Html5 Api中出现的如FileReader Api, 拖拽上传,甚至是Canvas,Video截图都可以实现
    2017-03-03
  • 微信小程序 表单Form实例详解(附源码)

    微信小程序 表单Form实例详解(附源码)

    这篇文章主要介绍了微信小程序 表单Form实例详解的相关资料,这里对form 表单进行了详细介绍,并附实例代码,需要的朋友可以参考下
    2016-12-12
  • 9个JavaScript日常开发小技巧

    9个JavaScript日常开发小技巧

    这篇文章主要介绍了9个JavaScript日常开发小技巧,,需要的朋友可以参考下
    2020-10-10
  • JS创建对象常用设计模式工厂构造函数及原型

    JS创建对象常用设计模式工厂构造函数及原型

    本篇带来你一定熟知的、用于创建对象的三种设计模式:工厂模式、构造函数模式、原型模式,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-07-07
  • js二进制数据及其互相转化实现详解

    js二进制数据及其互相转化实现详解

    这篇文章主要为大家介绍了js二进制数据及其互相转化实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论