apache-flex - 何时扩展 EventDispatcher

标签 apache-flex flash actionscript-3 events dispatcher

一个简单的问题..我想知道你们什么时候在你们的类里面扩展了 EventDispatcher。在我看来,只要我们有导入事件包,我们就可以毫无问题地分发事件......我看到有时人们在他们的类(class)中扩展 EventDispatcher......不知道为什么......有人关心解释吗?感谢一百万...

最佳答案

我想您可能会混淆这样一个事实,即 AS3 中的许多对象在继承树中更高层扩展 EventDispatcher,只需要导入 flash.events 包即可分派(dispatch)事件。例如,许多 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 类会执行一些内部逻辑,然后分派(dispatch)一个事件来指示发生了某些变化。任何正在监听该事件的类都可以调用公共(public) getTick() 方法来找出 _tick 的值。这隐藏了实现并保护 _tick 变量不被外部类更改,同时提供了一个接口(interface),通过该接口(interface)可以读取 Clock

关于apache-flex - 何时扩展 EventDispatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436051/

相关文章:

Flash Builder 4 包括所有正在重置的类

javascript - 是否可以将图像粘贴到 Silverlight/Flash/JavaScript 中?

html - 选择一种技术……为什么不选择 Flash?

apache-flex - ActionScript 事件处理程序执行顺序

javascript - JavaScript 函数能否检测调用它的 Flash DOM 对象?

apache-flex - 寻找在 AS3 的虚拟房间中自动布置一组对象(家具)的想法

apache-flex - 围绕一个圆圈动态间隔数字

apache-flex - Flex 数据网格排序不会跨数据提供者更改保留

apache-flex - Flex中数据管理的基本原理

apache-flex - 开发在线考试应用程序,如何防止作弊?