/** * @author SamsamTS */ import com.samsamts.Events.EventArgs; class com.samsamts.Events.EventHandler { //{ Author properties public static var className:String = "EventHandler"; public static var classPackage:String = "com.samsamts.Events"; public static var version:String = "1.0.0"; public static var author:String = "SamsamTS"; public static var link:String = "http://www.samsamts.com/blog/"; //} /** * Constructor * @param target Target on which to apply the function * @param f The function to call * @param ... Additional arguments to be transmitted */ public function EventHandler(target:Object, f:Function) { m_function = f; m_target = target; m_arguments = arguments.slice(2); } //{ Public /** * Call the EventHandler * If the target doesn't exist the call fails * @param sender The Object wich calls * @param arg * @return false if the call fails */ public function Call(sender:Object, arg:EventArgs):Boolean { if(m_target == undefined) return false; m_function.apply(m_target, (new Array(sender, arg)).concat(m_arguments)); return true; } /** * Compare two EventHandler * @param handler EventHandler to be compared * @return true if they are equal */ public function Compare(handler:EventHandler):Boolean { return m_function === handler.m_function && m_target === handler.m_target; } public function toString():String { return "[EventHandler]"; } //} //{ Private private var m_function:Function; private var m_target:Object; private var m_arguments:Array; //} }