Phaser.EventTarget = { call: function callCompat(obj){ if (obj) { obj = obj.prototype || obj; Phaser.EventTarget.mixin(obj); } } , mixin: function mixin(obj){ obj.listeners = function listeners(eventName){ this._listeners = this._listeners || { } ; return this._listeners[eventName]? this._listeners[eventName].slice(): [] ; } ; obj.emit = obj.dispatchEvent = function emit(eventName, data){ this._listeners = this._listeners || { } ; if (typeof eventName === 'object') { data = eventName; eventName = eventName.type; } if (!data || data.__isEventObject !== true ) { data = new Phaser.Event(this, eventName, data); } if (this._listeners && this._listeners[eventName]) { var listeners = this._listeners[eventName].slice(0), length = _AN_Read_length('length', listeners), fn = listeners[0], i; for (i = 0; i < length; fn = listeners[++i]){ fn.call(this, data); if (data.stoppedImmediate) { return this; } } if (data.stopped) { return this; } } if (this.parent && this.parent.emit) { this.parent.emit.call(this.parent, eventName, data); } return this; } ; obj.on = obj.addEventListener = function on(eventName, fn){ this._listeners = this._listeners || { } ; (this._listeners[eventName] = this._listeners[eventName] || [] ).push(fn); return this; } ; obj.once = function once(eventName, fn){ this._listeners = this._listeners || { } ; var self = this; function onceHandlerWrapper(){ fn.apply(self.off(eventName, onceHandlerWrapper), arguments); } onceHandlerWrapper._originalHandler = fn; return this.on(eventName, onceHandlerWrapper); } ; obj.off = obj.removeEventListener = function off(eventName, fn){ this._listeners = this._listeners || { } ; if (!this._listeners[eventName]) return this; var list = this._listeners[eventName], i = fn? _AN_Read_length('length', list): 0; while (i-- > 0){ if (list[i] === fn || list[i]._originalHandler === fn) { list.splice(i, 1); } } if (_AN_Read_length('length', list) === 0) { delete this._listeners[eventName]; } return this; } ; obj.removeAllListeners = function removeAllListeners(eventName){ this._listeners = this._listeners || { } ; if (!this._listeners[eventName]) return this; delete this._listeners[eventName]; return this; } ; } } ; Phaser.Event = function (target, name, data){ this.__isEventObject = true ; this.stopped = false ; this.stoppedImmediate = false ; _AN_Write_target('target', this, false , target); this.type = name; this.data = data; _AN_Write_content('content', this, false , data); this.timeStamp = Date.now(); } ; Phaser.Event.prototype.stopPropagation = function stopPropagation(){ this.stopped = true ; } ; Phaser.Event.prototype.stopImmediatePropagation = function stopImmediatePropagation(){ this.stoppedImmediate = true ; } ;