#

API Docs for: 1.4.0
Show: Inherited Protected Private Deprecated

# File: src/pixi/utils/EventTarget.js

    /**
     * https://github.com/mrdoob/eventtarget.js/
     * THankS mr DOob!
     */

    /**
     * Adds event emitter functionality to a class
     *
     * @class EventTarget
     * @example
     *      function MyEmitter() {
     *          PIXI.EventTarget.call(this); //mixes in event target stuff
     *      }
     *
     *      var em = new MyEmitter();
     *      em.emit({ type: 'eventName', data: 'some data' });
     */
    PIXI.EventTarget = function () {

        var listeners = {};

        this.addEventListener = this.on = function ( type, listener ) {

            if ( listeners[ type ] === undefined ) {

                listeners[ type ] = [];

            }

            if ( listeners[ type ].indexOf( listener ) === - 1 ) {

                listeners[ type ].push( listener );
            }

        };

        this.dispatchEvent = this.emit = function ( event ) {

            if ( !listeners[ event.type ] || !listeners[ event.type ].length ) {

                return;

            }

            for(var i = 0, l = listeners[ event.type ].length; i < l; i++) {

                listeners[ event.type ][ i ]( event );

            }

        };

        this.removeEventListener = this.off = function ( type, listener ) {

            var index = listeners[ type ].indexOf( listener );

            if ( index !== - 1 ) {

                listeners[ type ].splice( index, 1 );

            }

        };

    	this.removeAllEventListeners = function( type ) {
    		var a = listeners[type];
    		if (a)
    			a.length = 0;
    	};
    };