美文网首页
循环调用的三种方法

循环调用的三种方法

作者: _韩小妖 | 来源:发表于2016-05-28 17:01 被阅读714次

Window API:
1.requestAnimationFrame(function(){}); 只有函数名
2.setTimeout(function(){},time); 可以定义时间间隔
3.setInterval(function(){},time); 可以定义时间间隔

共性:循环调用函数,后面都有一个函数;
区别: setTimeout和setInterval 可以定义时间间隔,requestAnimationFrame只有函数名,主要为了效率起见,依据电脑设备的性能来确定每次回掉的时间,可以提高效率,更加的科学.

setTimeout 和 setInterval区别

setTimeout指的是:间隔一段时间后执行,只执行一次

setInterval是指:每隔一段时间执行,重复执行代码,一直到清掉计时器停止。

requestAnimationFrame的使用

1.处理兼容

需要处理兼容,各种浏览器的适配,封装代码如下

window.requestAnimationFrame = (function() {
    return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
        function( /* function FrameRequestCallback */ callback, /* DOMElement Element */ element) {
            return window.setTimeout(callback, 1000 / 60);
        };
})();

2.获取两帧的时间间隔

var lastTime = Date.now(); //上一次刷新的时间
var deltaTime; //两帧刷新的时间间隔

function gameloop(){
        window.requestAnimationFrame(gameloop);
        var now = Date.now(); //获取当前的时间
        deltaTime = now - lastTime;  //时间间隔
        console.log('deltaTime');
        lastTime = now//对于下一次刷新来说,当前时间已经变为下一次的时间
}
window.requestAnimationFrame(gameloop); //gameloop(); �两种调用都可以

相关文章

网友评论

      本文标题:循环调用的三种方法

      本文链接:https://www.haomeiwen.com/subject/xbsxdttx.html