AS3EnterFrame事件传播理解问题

时间:2013-06-03 15:19:16

标签: actionscript-3 events displayobject event-propagation enterframeevent

我无法理解EnterFrame事件传播的路径。 我知道事件有三个阶段:捕获,AtTarget和冒泡。

当我查看flash.events.Event类时,我看到Event没有冒泡。

如果我在任何DisplayObject上添加Eventlistener,它会收到Enter frame事件。 如果我使用useCapture = true,则不会收到任何事件。

但不应该所有事件都通过捕获阶段吗? 如果我检查Event目标,则返回接收DisplayObject作为其目标。

传播时是否更改了EnterFrame事件的目标,或者是否创建了新事件并将其传递给每个DisplayObject?

Flash是否与所有DisplayObject保持一个单独的List?因为当DisplayObject未添加到显示树时,甚至会收到EnterFrame事件吗?

1 个答案:

答案 0 :(得分:2)

  

ENTER_FRAME (from AS3 Reference)

     

此事件既没有“捕获阶段”也没有“泡沫阶段”   表示必须将事件侦听器直接添加到任何潜在的事件中   目标,目标是否在显示列表中。

回到你的问题:

  

如果我在任何DisplayObject上添加Eventlistener,它会收到Enter   框架事件。如果我使用useCapture = true执行相同操作,则无事件   接收。

useCapture = true //这不会做任何事情,因为ENTER_FRAME没有“捕获阶段”

  

但不应该所有事件都通过捕获阶段吗?

只有具有“捕获阶段”的事件

  

如果我检查Event目标,则返回接收DisplayObject作为其目标。

这是正确的

  

传播时,EnterFrame事件的目标是否会发生变化   或是创建并传递给每个DisplayObject的新事件?

将它单独发送给每个目标。

  

Flash是否与所有DisplayObject保持一个单独的List?因为   未添加DisplayObject时甚至会收到EnterFrame事件   显示树?

Sunil D评论中回答了这个问题