首页 > Develop & Design > 开源的事件模型as3signals

开源的事件模型as3signals

2009年12月16日 ColorHook 发表评论 阅读评论

事件驱动能够简化程序中消息传递的复杂性,为应用中的各个模块解耦,而且也便于理解和使用。作为DOM Events规范的一个实现,ActionScript 3.0的事件模型有很多值得学习、研究和讨论的地方。相对于AS2中的监听器来讲,它也更让人通俗易懂(如果你还记得以前的addListener和addEventListener的话)。

但是,当前的事件模型依然有很多让人不满意的地方。Robert Penner有几篇Blog对此进行了深入的描述:
My Critique of AS3 Events - Part 1
AS3 Events - 7 things I’ve learned from the community
My Critique of AS3 Events - Part 2 - The Dispatchening

以下是其中的部分抱怨:

事件的名称让人困惑

事件的名称看起来有些是过去式,有些是现在式,这容易让人搞混。更不可思议的是有的过去式代表的事情却实际上还没有发生,比如Event.REMOVED,其本意是一个显示对象将被移除时触发改事件

flash.events.EventDispatcher难用
  1. EventDispatcher没有类似removeAllEventListeners()的方法,这让清除监听器变得复杂。
  2. EventDispatcher难以扩展,我们继承EventDispatcher却没有任何受保护的属性,也没有任何受保护的方法可以调用。
  3. 如果不借助EventDispatcher,我们不可能实现接口IEventDispatcher

于是,Robert Penner开发了自己的事件机制as3signals。as3signals目前还在不断完善之中,开源社区的反响也十分强烈,其Google Group的地址是http://groups.google.com/group/as3-signals

as3signals从C# events和Qt中的Signals/Slots得到灵感。如果你厌倦了EventDispatcher,请试试as3signals,我的意思不是说as3signals只是个备选方案,客观的讲,它真的很优秀。

  1. 2009年12月17日09:35 | #1

    听着很精彩,下来看看。

  1. 2010年2月26日15:18 | #1