[新闻资讯] AS3事件机制的弊端——Part2——事件广播

[新闻资讯] AS3事件机制的弊端——Part2——事件广播

  • 资讯类型:
  • 来源页面: http://robertpenner.com/flashblog/2009/09/my-critique-of-as3-events-part-2.html
  • 资讯原标题: My Critique of AS3 Events - Part 2 - The Dispatchening
  • 资讯原作者: Robert Penner

    我的评论:
    对这篇文你有啥看法,跟贴说说吧!欢迎口水和板砖,哈哈。欢迎大家和我们一同分享更多资讯。


    flash.events.EventDispatcher可以更容易地被移除
    removeAllEventListeners(),你在哪里?大家都在找你。
    移除侦听器需要标记出首次被调用的名称,这种方式并不是很好。
    无论如何,OOP思想就这样,自行处理自己的行为而不是为难子类。
    让我们创建一个新的类,覆盖addEventListener()和..
    flash.events.EventDispatcher难以扩展
    看上去我的子类不能访问EventDispatcher中的所有侦听器。
    我会用一个数组保持侦听器,所以我能很容易的移除它们。在之前它要做的事情:
    http://k2xl.com/wordpress/2008/0 ... removealllisteners/
    http://code.google.com/p/k2xl/so ... 2xl/EventManager.as
    但是现在我的数组中所有侦听器都是强引用,useWeakReference选项就没啥用了。
    从理论上说,字典可以有弱引用,可惜的是,字典利用弱关键字存储方法还有漏洞storing methods in a weak keys Dictionary is buggy。此外,字典也没有队列的概念,如果我需要知道侦听者顺序怎么办?难道要为每一个侦听者创建弱引用字典和其它一系列的字典?虽然它已经完成(查看),但我不会考虑使用直到词典错误都修复完毕。
    嗯。。。能用特殊的数组处理弱引用?继续做梦。
    其要点是,flash.events.EventDispatcher是一个黑盒子——令人沮丧的一种。
    哦好,至少我们有IEventDispatcher接口。它看上去有很多的工作,但是我可以从头开始写自已的事件广播器并实现接口,对不?
    IEventDispatcher无法实现
    这种说法不完全正确的。它可以实现但不完美,或许有方法但我还不知道而已。
    因此,我放弃事件广播器构建从IEventDispatcher实现。我自定义添加或移除侦听器,甚至移除所有侦听器!形势看起来在好转。
    现在是精彩部分:dispatchEvent()方法。为事件类型找到侦听器数组。现在我将设置event.target属性,遍历
    Event.target属性只读
    A:会有人需要改变活动的目标?
    B:不可思议!
    但是,这里必须提供更改事件目标的方法,对不?

    EventDispatcher和IEventDispatcher紧密相关
    flash.events.Event与flash.events.EventDispatcher两者是一个秘密联盟。
    只有EventDispatcher肩负着令人敬畏的力量——改变目标。
    你不得不从flash.events.Event继承,因为没有事件接口。
    如果你高兴可以编写自己的事件广播器,但是你遇到的难题是target和currentTarget会一直为null。你不得不使用EventDispatcher实例广播事件。这使得你感到很惊讶为什么会这么麻烦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值