此请求动画帧填充是否也会产生时间戳
Does this requestAnimationFrame polyfill produce a timestamp aswell?
(function() {
var lastTime = 0;
var vendors = ['webkit', 'moz'];
for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
window.cancelAnimationFrame =
window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];
}
if (!window.requestAnimationFrame)
window.requestAnimationFrame = function(callback, element) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function() { callback(currTime + timeToCall); },
timeToCall);
lastTime = currTime + timeToCall;
return id;
};
if (!window.cancelAnimationFrame)
window.cancelAnimationFrame = function(id) {
clearTimeout(id);
};
}());
取自 https://gist.github.com/paulirish/1579671。在第一个 if 语句中,它测试requestAnimationFrame
是否作为窗口属性存在。在此 if 语句中,它创建了补偿所需的超时,但它是否也创建了一个要传递到调用函数中的时间戳?element
论点有什么作用?我想我需要有人帮助我了解这里发生的事情。
这是一个用例,用于显示我所指的时间戳:
var id = null,
start_time = null,
time_passed = null;
function loop( timestamp ){
if( !start_time ) start_time = timestamp;
time_passed = timestamp - start_time;
if( time_passed < 1000 ){
id = requestAnimationFrame( loop );
}
}
id = requestAnimationFrame( loop );
第一个循环只是通过检查window-object
中是否存在供应商前缀的变体来测试window.requestAnimationFrame
和window.cancelAnimationFrame
的存在。
element
参数已弃用,如 http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/
您还会注意到请求AnimFrame的第二个参数: 元素,在视觉上绑定整个动画。对于帆布和 WebGL,这将是实际的元素。对于 DOM 的东西,你 可以将其关闭或定义它以进行稍微优化 经验。此后,它已从规范中删除(和WebKit的 实施(
它将当前时间戳传递给回调函数:
var id = window.setTimeout(function() { callback(currTime + timeToCall); },
timeToCall);
其中currTime + timeToCall
是调用函数的时刻。然后,您可以像在示例中一样,在动画函数中将其用作第一个参数:
function loop(time){
//time === current time
}
相关文章:
- 如何每10.6秒从时间戳增加+1
- 使用AngularJS从时间戳中获取工作日
- 将时间戳转换为java中的ISO860,
- Javascript Unix时间戳转换
- JavaScript JSON关联对象键和值都作为日期时间戳
- 时间戳与mongoskin如何
- 用时间戳获取两个不同日期之间的时间差
- JavaScript到PHP的时间戳失败,增加了大约一个半月的时间
- 转换unix时间戳转换
- 带有unix时间戳的d3.js平分线
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 如何检索AMD的XHR响应代码(+时间戳)'大型Dojo
- 没有时区的PostgreSQL字段时间戳 - 如何检查它是否等于今天
- 是否可以筛选 JSON 源以仅显示时间戳字符串中的时间
- 此请求动画帧填充是否也会产生时间戳
- 如何检查时间戳是否属于当前日期
- Apache是否使用文件时间戳来检查资源是否被修改
- 如何检查值中的时间戳是否大于4500毫秒
- jQuery json缓存,是否有办法改变时间戳url键
- 如何验证发送的时间戳是否采用 UTC 格式(以猫鼬/Hapijs 为单位)