123456789101112131415161718192021222324252627282930313233343536373839 |
- 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;
|