Вы должны создать свою собственную реализацию EventDispatcher.Это печально, но собственный прототип IEventListener не предоставляет много полезных методов.
Существует пример кода, как будет выглядеть эта реализация:
package {
import flash.events.EventDispatcher;
import flash.utils.Dictionary;
/**
* Advanced Event Dispatcher with a ability to remove all listener by event type
* @author Rytis Alekna
*/
public class AdvancedEventDispatcher extends EventDispatcher {
/** This var holds all references to listeners */
protected var eventListenersByType : Dictionary = new Dictionary( true );
/**
* Call this method to remove all listeners of specified type
*/
public function removeEventListenersByEventType ( type : String, useCapture : Boolean = false ) : void {
var key : String = type + ":" + useCapture;
if ( this.eventListenersByType[ key ] && this.eventListenersByType[ key ].lenght > 0 ) {
// copy array of event listeners
var listenersToRemove : Array = this.eventListenersByType[ key ].concat();
// and clear original
this.eventListenersByType[ key ] = [];
// loop over all listeners
for ( var i : int = 0; i < listenersToRemove.length; i++ ) {
this.removeEventListener( type, ( removeEventListenersByEventType[i] as Function ), useCapture );
}
}
}
/**
* Override this method to implement listeners registration by type.
*/
override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false) : void {
// register with native method
super.addEventListener(type, listener, useCapture, priority, useWeakReference);
// create a key for storage
var key : String = type + ":" + useCapture;
// check if it doesn't already exist
if ( !this.eventListenersByType[ key ] ) {
this.eventListenersByType[ key ] = [];
}
// push listener to our storage
this.eventListenersByType[ key ].push( listener );
}
}
}
В противном случаекак вы упомянули, что в вашем случае вам нужно запускать событие только один раз, чем вы можете использовать такую удобную среду, как AS3 Signals (http://johnlindquist.com/2010/01/21/as3-signals-tutorial/)