【发布时间】:2013-05-29 19:21:45
【问题描述】:
我无法理解 EnterFrame 事件用于传播的路径。 我了解事件有 3 个阶段:捕获、目标和冒泡。
当我查看 flash.events.Event 类时,我发现 Event 不会冒泡。
如果我在任何 DisplayObject 上添加 Eventlistener,它会接收 Enter 帧事件。 如果我对 useCapture = true 执行相同操作,则不会收到任何事件。
但不是所有事件都应该通过捕获阶段吗? 如果我检查 Event 目标,它会返回接收 DisplayObject 作为其目标。
EnterFrame 事件的目标是否在传播时发生更改,或者是否创建了一个新事件并将其传递给每个 DisplayObject?
Flash 是否与所有 DisplayObject 保持一个单独的列表?因为在DisplayObject没有添加到Display Tree的时候,甚至收到了EnterFrame事件?
【问题讨论】:
-
这很有趣。 ENTER_FRAME 事件的行为似乎与其他事件不同。 1)正如您所提到的,它不会经历捕获阶段,2)如果我将输入帧侦听器添加到多个对象,似乎每个对象都接收到它自己的输入帧事件(在调试器中,每个事件都有不同的内存地址, 3)似乎输入帧事件被重新使用(相同的内存地址不断出现在调试器中)。正如您可以想象的那样,此事件如此频繁地发生,我们看到的行为可能是 Flash Player 的优化。
-
在page on senocular.com 的底部,他们谈到了“广播事件”(涉及多个对象的事件)。关于 Flash 中的事件,我以前从未听说过这个术语。我想广播事件的行为与我们都习惯的通常捕获-> 目标-> 气泡范例不同(如您的问题/我的 cmets 中所述)。希望我还有我的Collin Moock 书...
-
@Sunil D. 您的链接中有一些非常好的信息。
标签: actionscript-3 events displayobject event-propagation enterframeevent