actionscript 3-调用函数与调度事件



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

例如

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
}

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

在调度事件的情况下,"调度器"不需要了解任何有关侦听器的信息。甚至可能根本不存在监听器。

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

在效率和可维护性方面,您应该更喜欢直接方法调用。

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

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

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

最新更新