forked from hapticdata/animitter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathanimitter.min.js
7 lines (6 loc) · 5.95 KB
/
animitter.min.js
1
2
3
4
5
6
7
// Animitter 0.5.0
// Build: 2014-08-06
// by [Kyle Phillips](http://haptic-data.com)
// Available under [MIT License](http://github.com/hapticdata/animitter/blob/master/LICENSE)
// Env: Browser + Node
!function(){function a(a,b,c){var d,e=function(a){a=a||{},this.frameCount=0,this.deltaTime=0,this.__animating=!1,this.__completed=!1,this.__async=a.async===!0,this.__fps=a.fps||60,this.__lastTime=Date.now()},f={complete:function(){return this.stop(),this.__completed=!0,this.emit("complete",this.frameCount,this.deltaTime),this},getDeltaTime:function(){return this.deltaTime},getFPS:function(){return this.__fps},getFrameCount:function(){return this.frameCount},isAnimating:function(){return this.__animating},isCompleted:function(){return this.__completed},isAsync:function(){return this.__async},update:function(){this.frameCount++,this.emit("update",this.frameCount)},reset:function(){return this.__animating&&this.stop(),this.__completed=!1,this.frameCount=0,this.emit("reset",this.frameCount),this},start:function(b){var c,e,f,g,h=this;if(this.__animating)return this;this.emit("start",this.frameCount),d.running+=1,this.__animating=!0;var i=Date.now();return this.deltaTime=i-this.__lastTime,this.__lastTime=i,e=function(){h.frameCount++;var a=Date.now();return h.deltaTime=a-h.__lastTime,h.__lastTime=a,h.__async?(h.emit("update",h.frameCount,h.deltaTime,function(){h.__animating=!0,g()}),!1):(h.emit("update",h.frameCount,h.deltaTime),!0)},void 0!==b&&this.on("update",b),c=function(){var a=Date.now();return h.__fps<60?function(){var b=Date.now();return b-a<1e3/h.__fps?!1:(a=b,!0)}:function(){return!0}}(),f=function(){var b;return function(){h.__animating?b=a.requestAnimationFrame(g):a.cancelAnimationFrame(b)}}(),g=function(){return c()?void(e()&&f()):void f()},g(),this},stop:function(){return this.__animating&&(this.__animating=!1,d.running-=1,this.emit("stop",this.frameCount,this.deltaTime)),this}};b(e,c);for(var g in f)e.prototype[g]=f[g];return d=function(a,b){1===arguments.length&&"function"==typeof a&&(b=a,a={});var c=new e(a);return b&&c.on("update",b),c},d.running=0,d.async=function(a,b){return 1===arguments.length&&(b=a,a={}),a.async=!0,d.start(a,b)},d.start=function(a,b){1===arguments.length&&(b=a,a={});var c=new e(a);return c.start(b)},d.Animitter=e,d.EventEmitter=c,d}function b(){}function c(a,b){a.super_=b,a.prototype=Object.create(b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}})}"function"==typeof define&&define.amd?define(function(){return a(this,c,b)}):"function"==typeof require?module.exports=a(this,require("util").inherits,require("events").EventEmitter):this.animitter=a(this,c,b),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!this.requestAnimationFrame;++c)this.requestAnimationFrame=this[b[c]+"RequestAnimationFrame"],this.cancelAnimationFrame=this[b[c]+"CancelAnimationFrame"]||this[b[c]+"CancelRequestAnimationFrame"];this.requestAnimationFrame||(this.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=setTimeout(function(){b(c+d)},d);return a=c+d,e}),this.cancelAnimationFrame||(this.cancelAnimationFrame=function(a){clearTimeout(a)})}(),Array.isArray=Array.isArray||function(a){return"[object Array]"=={}.toString.call(a)},Date.now=Date.now||function(){return(new Date).getTime()};var d=10;b.prototype.setMaxListeners=function(a){this._events||(this._events={}),this._maxListeners=a},b.prototype.emit=function(){var a,b,c,d=arguments[0];if("error"===d&&(!this._events||!this._events.error||Array.isArray(this._events.error)&&!this._events.error.length))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");if(!this._events)return!1;var e=this._events[d];if(!e)return!1;if("function"==typeof e){switch(arguments.length){case 1:e.call(this);break;case 2:e.call(this,arguments[1]);break;case 3:e.call(this,arguments[1],arguments[2]);break;default:for(a=arguments.length,b=new Array(a-1),c=1;a>c;c++)b[c-1]=arguments[c];e.apply(this,b)}return!0}if(Array.isArray(e)){for(a=arguments.length,b=new Array(a-1),c=1;a>c;c++)b[c-1]=arguments[c];var f=e.slice();for(c=0,a=f.length;a>c;c++)f[c].apply(this,b);return!0}return!1},b.prototype.trigger=b.prototype.emit,b.prototype.addListener=function(a,b){if("function"!=typeof b)throw new Error("addListener only takes instances of Function");if(this._events||(this._events={}),this.emit("newListener",a,"function"==typeof b.listener?b.listener:b),this._events[a]?Array.isArray(this._events[a])?this._events[a].push(b):this._events[a]=[this._events[a],b]:this._events[a]=b,Array.isArray(this._events[a])&&!this._events[a].warned){var c;c=void 0!==this._maxListeners?this._maxListeners:d,c&&c>0&&this._events[a].length>c&&(this._events[a].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[a].length),console.trace())}return this},b.prototype.on=b.prototype.addListener,b.prototype.once=function(a,b){function c(){d.removeListener(a,c),b.apply(this,arguments)}if("function"!=typeof b)throw new Error(".once only takes instances of Function");var d=this;return c.listener=b,d.on(a,c),this},b.prototype.removeListener=function(a,b){if("function"!=typeof b)throw new Error("removeListener only takes instances of Function");if(!this._events||!this._events[a])return this;var c=this._events[a];if(Array.isArray(c)){for(var d=-1,e=0,f=c.length;f>e;e++)if(c[e]===b||c[e].listener&&c[e].listener===b){d=e;break}if(0>d)return this;c.splice(d,1),0===c.length&&delete this._events[a]}else(c===b||c.listener&&c.listener===b)&&delete this._events[a];return this},b.prototype.off=b.prototype.removeListener,b.prototype.removeAllListeners=function(a){return 0===arguments.length?(this._events={},this):(a&&this._events&&this._events[a]&&(this._events[a]=null),this)},b.prototype.listeners=function(a){return this._events||(this._events={}),this._events[a]||(this._events[a]=[]),Array.isArray(this._events[a])||(this._events[a]=[this._events[a]]),this._events[a]}}();