【问题标题】:When to extends EventDispatcher何时扩展 EventDispatcher
【发布时间】:2011-03-27 01:11:08
【问题描述】:

简单的问题..我想知道你们什么时候在课堂上扩展 EventDispatcher。在我看来,只要我们有导入事件包,我们就可以毫无问题地 dispatchEvent....我看到有时人们在他们的班级中扩展 EventDispatcher...不知道为什么...有人愿意解释吗?谢谢一百万...

【问题讨论】:

    标签: apache-flex flash actionscript-3 events dispatcher


    【解决方案1】:

    我认为您可能会感到困惑,因为 AS3 中的许多对象在继承树中将 EventDispatcher 扩展得更高,只需要导入 flash.events 包即可调度事件。例如,许多 DisplayObject 类扩展了 EventDispatcher。以下是几个例子:

    Shape » DisplayObject » EventDispatcher » Object
    
    Sprite » DisplayObjectContainer » InteractiveObject » DisplayObject » EventDispatcher » Object
    

    通常,每当我使用自定义类时,我都会扩展 EventDispatcher,该类只需要与超出其范围的对象进行通信,即某些内部属性已更改或某些功能正在发生。这是一个例子:

    public class Clock extends EventDispatcher
    {
         protected var _tick:uint;
    
         protected function run():void
         {
             if( _tick + 1 > 60 ) {
                 _tick = 0;
             } else {
                 _tick++;
             }
             dispatchEvent( new Event( Event.CHANGE ) );
         }
    
         public function getTick():uint { return _tick; }
    }
    

    有时将对象的内部细节保持只读是“重要的”。在上面的例子中,当调用run() 方法时,Clock 类会执行一些内部逻辑,然后调度一个事件来指示发生了一些变化。任何监听该事件的类都可以调用公共的getTick() 方法来找出_tick 的值。这隐藏了实现并保护_tick 变量不被外部类更改,同时提供了一个可以读取Clock 的接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      相关资源
      最近更新 更多