处理显示对象的事件

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

DisplayObject 类从 EventDispatcher 类继承。这意味着,每个显示对象都可完全参与到事件模型中(在 处理事件 中介绍)。每个显示对象都可使用其 addEventListener() 方法(继承自 EventDispatcher 类)来侦听特定的事件,但仅当侦听对象是该事件的事件流的一部分时才能实现此功能。

当 Flash Player 或 AIR 调度某个事件对象时,该事件对象会执行从舞台到发生事件的显示对象的往返行程。例如,如果用户单击名为 child1 的显示对象,Flash Player 会沿显示列表层次将事件对象从舞台向下调度到 child1 显示对象。

从概念上说,事件流分为三个阶段,如下图所示:

<事件流的三个阶段>

有关详细信息,请参阅 处理事件

使用显示对象事件时需要记住的一个重要问题是:从显示列表中删除显示对象时,事件侦听器的存在将会对是否从内存中自动删除显示对象(垃圾回收)产生影响。如果显示对象拥有订阅为其事件的侦听器的对象,即使从显示列表中删除了显示对象,也不会从内存中删除显示对象,因为显示对象仍然拥有对这些侦听器对象的引用。有关详细信息,请参阅 管理事件侦听器