{"version":3,"sources":["../../src/js/requestAnimationFrame.js"],"names":["lastTime","prefixes","split","requestAnimationFrame","window","cancelAnimationFrame","prefix","i","length","callback","element","currTime","Date","getTime","timeToCall","Math","max","id","setTimeout","clearTimeout"],"mappings":"YAkCA,KAAK,GARDA,UAAW,EACXC,SAAW,kBAAkBC,MAAM,KAEnCC,sBAAwBC,OAAOD,sBAC/BE,qBAAuBD,OAAOC,qBAE9BC,OAEKC,EAAI,EAAGA,EAAIN,SAASO,UACvBL,wBAAyBE,sBADME,IAInCD,OAASL,SAASM,GAClBJ,sBAAwBA,uBAAyBC,OAAOE,OAAS,yBACjED,qBAAuBA,sBAAwBD,OAAOE,OAAS,yBAA2BF,OAAOE,OAAS,8BAIvGH,wBAA0BE,uBAC7BF,sBAAwB,QAAAA,GAASM,EAAUC,GACzC,GAAIC,IAAW,GAAIC,OAAOC,UAEtBC,EAAaC,KAAKC,IAAI,EAAG,IAAML,EAAWX,WAC1CiB,EAAKb,OAAOc,WAAW,WACzBT,EAASE,EAAWG,IACnBA,EAEH,OADAd,UAAWW,EAAWG,EACfG,GAGTZ,qBAAuB,QAAAA,GAASY,GAC9Bb,OAAOe,aAAaF,KAKxBb,OAAOD,sBAAwBA,sBAC/BC,OAAOC,qBAAuBA","file":"requestAnimationFrame.js","sourcesContent":["// (function () {\n// var lastTime = 0;\n// var vendors = ['webkit', 'moz'];\n// for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n// window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n// window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || // name has changed in Webkit\n// window[vendors[x] + 'CancelRequestAnimationFrame'];\n// }\n\n// if (!window.requestAnimationFrame) {\n// window.requestAnimationFrame = function (callback, element) {\n// var currTime = new Date().getTime();\n// var timeToCall = Math.max(0, 16.7 - (currTime - lastTime));\n// var id = window.setTimeout(function () {\n// callback(currTime + timeToCall);\n// }, timeToCall);\n// lastTime = currTime + timeToCall;\n// return id;\n// };\n// }\n// if (!window.cancelAnimationFrame) {\n// window.cancelAnimationFrame = function (id) {\n// clearTimeout(id);\n// };\n// }\n// }());\nvar lastTime = 0;\nvar prefixes = 'webkit moz ms o'.split(' '); //各浏览器前缀\n\nvar requestAnimationFrame = window.requestAnimationFrame;\nvar cancelAnimationFrame = window.cancelAnimationFrame;\n\nvar prefix;\n//通过遍历各浏览器前缀,来得到requestAnimationFrame和cancelAnimationFrame在当前浏览器的实现形式\nfor (var i = 0; i < prefixes.length; i++) {\n if (requestAnimationFrame && cancelAnimationFrame) {\n break;\n }\n prefix = prefixes[i];\n requestAnimationFrame = requestAnimationFrame || window[prefix + 'RequestAnimationFrame'];\n cancelAnimationFrame = cancelAnimationFrame || window[prefix + 'CancelAnimationFrame'] || window[prefix + 'CancelRequestAnimationFrame'];\n}\n\n//如果当前浏览器不支持requestAnimationFrame和cancelAnimationFrame,则会退到setTimeout\nif (!requestAnimationFrame || !cancelAnimationFrame) {\n requestAnimationFrame = function(callback, element) {\n var currTime = new Date().getTime();\n //为了使setTimteout的尽可能的接近每秒60帧的效果\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function() {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n\n cancelAnimationFrame = function(id) {\n window.clearTimeout(id);\n };\n}\n\n//得到兼容各浏览器的API\nwindow.requestAnimationFrame = requestAnimationFrame;\nwindow.cancelAnimationFrame = cancelAnimationFrame;\n"]}