You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.0 KiB
39 lines
1.0 KiB
var now = require('./now');
|
|
var isBrowser = require('./isBrowser');
|
|
var raf, cancel;
|
|
var lastTime = 0;
|
|
if (isBrowser) {
|
|
raf = window.requestAnimationFrame;
|
|
cancel = window.cancelAnimationFrame;
|
|
var vendors = ['ms', 'moz', 'webkit', 'o'];
|
|
for (var i = 0, len = vendors.length; i < len && !raf; i++) {
|
|
raf = window[vendors[i] + 'RequestAnimationFrame'];
|
|
cancel =
|
|
window[vendors[i] + 'CancelAnimationFrame'] ||
|
|
window[vendors[i] + 'CancelRequestAnimationFrame'];
|
|
}
|
|
if (raf) {
|
|
raf = raf.bind(window);
|
|
cancel = cancel.bind(window);
|
|
}
|
|
}
|
|
raf =
|
|
raf ||
|
|
function(cb) {
|
|
var curTime = now();
|
|
var timeToCall = Math.max(0, 16 - (curTime - lastTime));
|
|
var id = setTimeout(function() {
|
|
cb(curTime + timeToCall);
|
|
}, timeToCall);
|
|
lastTime = curTime + timeToCall;
|
|
return id;
|
|
};
|
|
cancel =
|
|
cancel ||
|
|
function(id) {
|
|
clearTimeout(id);
|
|
};
|
|
raf.cancel = cancel;
|
|
exports = raf;
|
|
|
|
module.exports = exports;
|
|
|