当你可以直接调用函数时,有什么用于创建这样的事件。
例如
var customEvent:Event = new Event("ev");
_myObject.addEventListener("ev", handler);
private function handler(e:Event):void
{
//Do something
}
//And then dispatching the event else where like this
_myObject.dispatchEvent(customEvent);
当你可以像这样直接调用函数时
handler();
private function handler():void
{
//do something
}
自定义事件究竟是什么意思?在这种情况下,我应该使用哪一个来提高效率和最少的资源消耗?
答案 0 :(得分:6)
如果发送事件,“调度员”不需要了解有关侦听器的任何信息。甚至可能没有听众存在。
如果直接调用函数,它必须知道函数的名称,它必须引用实现该函数的对象,依此类推。它使代码更难重用。
答案 1 :(得分:0)
就效率而言,在我的诚实意见可维护性方面,您应该更喜欢直接方法调用。
事件更通用,通常用于Publish-subscribe模式。您可以使用任何语言轻松创建基于事件的系统,并且可以为每个可以分派的事件维护订阅者列表。必须检查并遍历此列表,调用所有订阅者,这通常可以通过字典或其他数据结构相当有效地完成。
如果您坚持使用一致的消息传递模式,那么事件可以帮助从GUI表示中抽象逻辑。许多语言使用事件与GUI系统集成,包括C#,AS3,Objective-C。
一般情况下,随着项目大小的增加,消息系统变得越来越难以维护,因为您将失去编译时间检查以支持更通用的动态调度机制。