juggle-event
Version:
1 lines • 2.86 kB
JavaScript
!function(t){t.juggle||(t.juggle={});var n=t.juggle.tools;t.juggle.Event=function(t,e,i){this.mTarget=null,this.mCurrentTarget=null,this.mType=null,this.mBubbles=null,this.mStopsPropagation=null,this.mStopsImmediatePropagation=null,this.mData=null,this.stopPropagation=function(){this.mStopsPropagation=!0},this.stopImmediatePropagation=function(){this.mStopsPropagation=this.mStopsImmediatePropagation=!0},this.reset=function(t,e,i){return n.isNull(e)&&(e=!1),n.isNull(i)&&(i=null),this.mType=t,this.mBubbles=e,this.mData=i,this.mTarget=this.mCurrentTarget=null,this.mStopsPropagation=this.mStopsImmediatePropagation=!1,this},this.reset(t,e,i)}}(window),function(t){t.juggle||(t.juggle={});var n=t.juggle.Event;t.juggle.eventPool=new function(){this.sEventPool=[],this.fromPool=function(t,e,i){return this.sEventPool.length?this.sEventPool.pop().reset(t,e,i):new n(t,e,i)},this.toPool=function(t){t.mData=t.mTarget=t.mCurrentTarget=null,this.sEventPool[this.sEventPool.length]=t}}}(window),function(t){t.juggle||(t.juggle={});var n=t.juggle.eventPool,e=t.juggle.tools,i=[];t.juggle.EventDispatcher=function(){this.mEventListeners=null,this.isEventDispatcher=!0,this.functionMapping=[],this.addEventListener=function(t,n,i){e.isNull(this.mEventListeners)&&(this.mEventListeners=[]);var s=this.mEventListeners[t];e.isNull(s)?(this.mEventListeners[t]=[n],this.functionMapping[n]=i):-1===e.indexOf(s,n)&&(s.push(n),this.functionMapping[n]=i)},this.removeEventListener=function(t,n){if(this.mEventListeners){var e=this.mEventListeners[t],i=e?e.length:0;if(i>0){for(var s=0,o=[],l=0;l<i;++l){var r=e[l];r!==n&&(o[s++]=r)}this.mEventListeners[t]=o}}},this.removeEventListeners=function(t){t&&this.mEventListeners?delete this.mEventListeners[t]:this.mEventListeners=null},this.dispatchEvent=function(t){var n=t.mBubbles;if(n||!e.isNull(this.mEventListeners)&&t.mType in this.mEventListeners){var i=t.mTarget;t.mTarget=this,n&&this.isDisplayObject?this.bubbleEvent(t):this.invokeEvent(t),i&&(t.mTarget=i)}},this.invokeEvent=function(t){var n=this.mEventListeners?this.mEventListeners[t.mType]:null,i=e.isNull(n)?0:n.length;if(i){t.mCurrentTarget=this;for(var s=0;s<i;++s){var o=n[s],l=o.length;if(0===l?o.call(this.functionMapping[o]):1===l?o.call(this.functionMapping[o],t):o.call(this.functionMapping[o],t,t.mData),t.mStopsImmediatePropagation)return!0}return t.mStopsPropagation}return!1},this.bubbleEvent=function(t){var n,s=this,o=1;for(i.length>0?(n=i.pop())[0]=s:n=[s];!e.isNull(s=s.parent);)n[o++]=s;for(var l=0;l<o&&!n[l].invokeEvent(t);++l);n.length=0,i.push(n)},this.dispatchEventWith=function(t,i,s){if(e.isNull(i)&&(i=!1),e.isNull(s)&&(s=null),i||this.hasEventListener(t)){var o=n.fromPool(t,i,s);this.dispatchEvent(o),n.toPool(o)}},this.hasEventListener=function(t){var n=this.mEventListeners?this.mEventListeners[t]:null;return!!n&&0!==n.length}}}(window);