package {
publicclassEventManager{
privatestaticvar interestsList:Object=newObject();
/** * Lets the EventManager know that this component/module is interested in these events. * <p/> * Thereafter, when EventManager.fireEvent gets called for any correlating event, it will let the component know. * * @param component The component that is interested in the event. * @param interests An array of interests. All events/interests are in this case are strings. Although it is very common/standard to set up an Events class with static vars for easy referenece/rememberance. */publicstaticfunctionregisterInterests(component:*, interests:Array):void{
for(var i:int=0; i < interests.length; i ++){
if(EventManager.interestsList[interests[i]] is Array){
EventManager.interestsList[interests[i]].push(component);
}
else{EventManager.interestsList[interests[i]] =newArray(component);}
}
}
/** * Lets the EventManager know that this component/module is no longer interested in these events. * <p/> * Thereafter, when EventManager.fireEvent gets called for any correlating event, it will no longer let the component know. * * @param component The component to unregister for listed events/interests. * @param interests An array of interests. All events/interests are in this case are strings. Although it is very common/standard to set up an Events class with static vars for easy referenece/rememberance. */publicstaticfunctionunregisterInterests(component:*, interests:Array):void{
for(var i:int=0; i < interests.length; i ++){
if(EventManager.interestsList[interests[i]] is Array){
var interestIndex:int= EventManager.interestsList[interests[i]].indexOf(component);
if(interestIndex !=-1){
EventManager.interestsList[interests[i]].splice(interestIndex, 1);
}
}
}
}
/** * Fire an event, letting all interested components know of said event. * * @param event The event that is being fired. * @param args An Object of arguments. It's an Object so as to be flexible/dynamic. */publicstaticfunctionfireEvent(event:String, args:Object = null):void{
if(EventManager.interestsList[event] is Array){
for(var i:int=0; i < EventManager.interestsList[event].length; i ++){
if(EventManager.interestsList[event][i] !=null&& EventManager.interestsList[event][i].catchEvent !=null){
EventManager.interestsList[event][i].catchEvent(event, args);
}
else{
trace("WARNING!: catchEvent Function not found on "+ EventManager.interestsList[event][i]);
}
}
}
}
}
}