Skip to content

Instantly share code, notes, and snippets.

@phated
Created February 14, 2012 20:29
Show Gist options
  • Save phated/1830097 to your computer and use it in GitHub Desktop.
Save phated/1830097 to your computer and use it in GitHub Desktop.
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