Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
package { public class EventManager{ private static var interestsList:Object = new Object(); /** * 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. */ public static function registerInterests(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]] = new Array(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. */ public static function unregisterInterests(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. */ public static function fireEvent(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]); } } } } } }
This paste will be private.
From the Design Piracy series on my blog: