2

当您可以直接调用函数时,创建这样的自己的事件有什么用。

例如

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
}

自定义事件到底有什么意义?在这种情况下,我应该使用哪一个来提高效率和最少的资源消耗?

4

2 回答 2

7

在调度事件的情况下,“调度员”不需要了解任何关于侦听器的信息。甚至可能不存在听众。

在直接调用函数的情况下,它必须知道函数的名称,它必须具有对实现该函数的对象的引用,等等。它使代码更难重用。

于 2013-02-25T17:14:33.993 回答
0

就效率而言,在我看来,可维护性,您应该更喜欢直接方法调用。

事件更通用,通常用于发布-订阅模式。您可以使用任何语言相当容易地创建基于事件的系统,并且需要为每个可以分派的事件维护一个订阅者列表。必须检查并遍历此列表以调用所有订阅者,这通常可以使用字典或其他数据结构相当有效地完成。

如果您坚持一致的消息传递模式,那么事件可能有助于从 GUI 表示中抽象逻辑。许多语言使用事件与 GUI 系统集成,包括 C#、AS3、Objective-C。

一般来说,随着项目规模的增加,消息系统可能会变得更难维护,因为您会失去编译时间检查以支持更通用的动态调度机制。

于 2013-02-25T17:17:40.503 回答