Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
window.requestAnimationFrame shim
###
http://paulirish.com/2011/requestanimationframe-for-smart-animating/
http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
requestAnimationFrame polyfill by Erik Möller
fixes from Paul Irish and Tino Zijdel
Coffeescript and AMD by Blaine Bublitz
###
define [], ->
lastTime = 0;
vendors = [ "ms", "moz", "webkit", "o" ]
x = 0
while x < vendors.length and not window.requestAnimationFrame
window.requestAnimationFrame = window[vendors[x] + "RequestAnimationFrame"]
window.cancelAnimationFrame = window[vendors[x] + "CancelAnimationFrame"] or window[vendors[x] + "CancelRequestAnimationFrame"]
++x
unless window.requestAnimationFrame
window.requestAnimationFrame = (callback, element) ->
currTime = new Date().getTime()
timeToCall = Math.max 0, 16 - (currTime - lastTime)
id = window.setTimeout(->
callback currTime + timeToCall
, timeToCall)
lastTime = currTime + timeToCall
return id
unless window.cancelAnimationFrame
window.cancelAnimationFrame = (id) -> clearTimeout id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.