46 lines
1.5 KiB
JavaScript
46 lines
1.5 KiB
JavaScript
var _fns = []
|
|
var _last = 0
|
|
var _frame = 1000 / 60
|
|
|
|
module.exports = {
|
|
setTimeout : function($window) {
|
|
$window.setTimeout = typeof window === "object" ? window.setTimeout : global.setTimeout;
|
|
$window.clearTimeout = typeof window === "object" ? window.clearTimeout : global.setTimeout;
|
|
},
|
|
|
|
requestAnimationFrame : function($window) {
|
|
// Modified version of https://github.com/chrisdickinson/raf
|
|
// Copyright chrisdickinson I guess?
|
|
$window.requestAnimationFrame = typeof window === "object" ? window.requestAnimationFrame : function(fn) {
|
|
if(!_fns.length) {
|
|
var now = Date.now()
|
|
var next = Math.max(0, _frame - (now - _last))
|
|
|
|
_last = next + now
|
|
|
|
setTimeout(function() {
|
|
var fns = _fns.slice()
|
|
|
|
_fns = []
|
|
|
|
for(var i = 0; i < fns.length; i++) {
|
|
if(typeof fns[i] !== "function") {
|
|
continue
|
|
}
|
|
|
|
fns[i](_last)
|
|
}
|
|
}, Math.round(next))
|
|
}
|
|
|
|
_fns.push(fn)
|
|
|
|
return _fns.length - 1;
|
|
}
|
|
|
|
$window.cancelAnimationFrame = typeof window === "object" ? window.cancelAnimationFrame : function(handle) {
|
|
_fns[handle] = null
|
|
};
|
|
}
|
|
}
|
|
|