一篇文章带你制作 canvas 小游戏 (2)

window.requestAnimationFrame();

这个方法是,HTML5 专门为js实现动画效果提供的一个函数!(推荐大家使用)

setInterval 的劣势:
1.指定定时器的时间不准确  // 4ms /10ms
2.执行动画效果会造成性能的问题,如果页面中使用了多个定时器,每个定时器中都来操作dom元素,操作dom频繁了以后,会造成严重性能问题;

看性能: DOM 的重绘和重排(影响web程序的两个重要因素);
3.会造成丢帧的问题(浏览器刷新频率: 60HZ(一秒钟刷新60次)==>16.67毫秒的时间完成js效果,才不会卡!! 浏览器和定时器的刷新频率不一样,浏览器每次只能显示一帧,定时器过快会丢帧);

window.requestAnimationFrame();
能够每隔一段时间来调用一个回调函数来执行某段代码逻辑;
优势:
1. requestAnimationFrame 是根据当前浏览器的刷新频率来进行调用的(浏览器刷新一次,就会将所有 requestAnimationFrame中执行的回调函数执行一次,不会造成丢帧的问题)
2. 页面中所有的requestAnimationFrame 会在浏览器刷新的时候,一次性全部执行;(性能会有所提高);
3.因为requestAnimationFrame 方法会根据当前浏览器的刷新频率来执行,所以,事件是不固定的,但是,不会有问题;

requestAnimationFrame 语法:

var fn = function(){
//在函数的最后调用requestAnimationFrame 函数;
//函数接受一个函数参数,就是告诉浏览器下一次刷新的时候,调用fn
window.requestAnimationFrame(fn);

};

_________________
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值