UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

215 lines (198 loc) 6.89 kB
// Class: starling.events.EventDispatcher var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function openfl_errors_ArgumentError() {return $import(require("openfl/errors/ArgumentError"));} function haxe_ds_StringMap() {return require("./../../haxe/ds/StringMap");} function openfl__$Vector_Vector_$Impl_$() {return require("./../../openfl/_Vector/Vector_Impl_");} function Reflect() {return require("./../../Reflect");} function openfl_VectorData() {return $import(require("openfl/Vector"));} function starling_display_DisplayObject() {return require("./../../starling/display/DisplayObject");} function js_Boot() {return require("./../../js/Boot");} function starling_events_Event() {return require("./../../starling/events/Event");} // Constructor var EventDispatcher = function() { this.__eventStack = (openfl__$Vector_Vector_$Impl_$().default)._new(); } // Meta EventDispatcher.__name__ = "starling.events.EventDispatcher"; EventDispatcher.__isInterface__ = false; EventDispatcher.prototype = { addEventListener: function(type,listener) { if(listener == null) { throw new (js__$Boot_HaxeError().default)(new (openfl_errors_ArgumentError().default)("null listener added")); } if(this.__eventListeners == null) { this.__eventListeners = new (haxe_ds_StringMap().default)(); } var listeners = this.__eventListeners.get(type); if(listeners == null) { var this1 = this.__eventListeners; var v = (openfl__$Vector_Vector_$Impl_$().default)._new(); this1.set(type,v); (openfl__$Vector_Vector_$Impl_$().default).push(this.__eventListeners.get(type),listener); } else { var _g = 0; var _g1 = listeners.length; while(_g < _g1) { var i = _g++; if((Reflect().default).compareMethods(listeners[i],listener)) { return; } } (openfl__$Vector_Vector_$Impl_$().default).set(listeners,listeners.length,listener); } }, removeEventListener: function(type,listener) { if(this.__eventListeners != null) { var listeners = this.__eventListeners.get(type); var numListeners = listeners != null ? listeners.length : 0; if(numListeners > 0) { var index = (Array.prototype.indexOf.call)(listeners,listener,0); if(index != -1) { var this1 = this.__eventStack; if((Array.prototype.indexOf.call)(this1,type,0) == -1) { (openfl__$Vector_Vector_$Impl_$().default).removeAt(listeners,index); } else { var startIndex = 0; var endIndex = index; if(endIndex == null) { endIndex = 16777215; } if(startIndex == null) { startIndex = 0; } var restListeners = (openfl_VectorData().default).ofArray((Array.prototype.slice.call)(listeners,startIndex,endIndex)); var _g = index + 1; var _g1 = numListeners; while(_g < _g1) { var i = _g++; (openfl__$Vector_Vector_$Impl_$().default).set(restListeners,i - 1,listeners[i]); } this.__eventListeners.set(type,restListeners); } } } } }, removeEventListeners: function(type) { if(type != null && this.__eventListeners != null) { this.__eventListeners.remove(type); } else { this.__eventListeners = null; } }, dispatchEvent: function(event) { var bubbles = event.bubbles; if(!bubbles && (this.__eventListeners == null || !this.__eventListeners.exists(event.type))) { return; } var previousTarget = event.target; event.setTarget(this); if(bubbles && ((this) instanceof (starling_display_DisplayObject().default))) { this.__bubbleEvent(event); } else { this.__invokeEvent(event); } if(previousTarget != null) { event.setTarget(previousTarget); } }, __invokeEvent: function(event) { var listeners = this.__eventListeners != null ? this.__eventListeners.get(event.type) : null; var numListeners = listeners == null ? 0 : listeners.length; if(numListeners != 0) { event.setCurrentTarget(this); (openfl__$Vector_Vector_$Impl_$().default).set(this.__eventStack,this.__eventStack.length,event.type); var _g = 0; var _g1 = numListeners; while(_g < _g1) { var i = _g++; var listener = listeners[i]; if(listener == null) { continue; } var numArgs = 2; if(numArgs == 0) { listener(); } else if(numArgs == 1) { listener(event); } else { listener(event,event.data); } if(event.stopsImmediatePropagation) { (openfl__$Vector_Vector_$Impl_$().default).pop(this.__eventStack); return true; } } (openfl__$Vector_Vector_$Impl_$().default).pop(this.__eventStack); return event.stopsPropagation; } else { return false; } }, __bubbleEvent: function(event) { var chain; var element = (js_Boot().default).__cast(this , (starling_display_DisplayObject().default)); var length = 1; if(EventDispatcher.sBubbleChains.length > 0) { chain = EventDispatcher.sBubbleChains.pop(); (openfl__$Vector_Vector_$Impl_$().default).set(chain,0,element); } else { chain = (openfl__$Vector_Vector_$Impl_$().default)._new(); (openfl__$Vector_Vector_$Impl_$().default).push(chain,element); } while(true) { element = element.get_parent(); if(!(element != null)) { break; } (openfl__$Vector_Vector_$Impl_$().default).set(chain,length++,element); } var _g = 0; var _g1 = length; while(_g < _g1) { var i = _g++; if(chain[i] == null) { continue; } var stopPropagation = chain[i].__invokeEvent(event); if(stopPropagation) { break; } } chain.length = 0; EventDispatcher.sBubbleChains[EventDispatcher.sBubbleChains.length] = chain; }, dispatchEventWith: function(type,bubbles,data) { if(bubbles == null) { bubbles = false; } if(bubbles || this.hasEventListener(type)) { var event = (starling_events_Event().default).fromPool(type,bubbles,data); this.dispatchEvent(event); (starling_events_Event().default).toPool(event); } }, hasEventListener: function(type,listener) { var listeners = this.__eventListeners != null ? this.__eventListeners.get(type) : null; if(listeners == null) { return false; } else if(listener != null) { return (Array.prototype.indexOf.call)(listeners,listener,0) != -1; } else { return listeners.length != 0; } } }; EventDispatcher.prototype.__class__ = EventDispatcher.prototype.constructor = $hxClasses["starling.events.EventDispatcher"] = EventDispatcher; // Init // Statics EventDispatcher.sBubbleChains = [] // Export exports.default = EventDispatcher;