我无法理解EnterFrame事件传播的路径。 我知道事件有三个阶段:捕获,AtTarget和冒泡。
当我查看flash.events.Event类时,我看到Event没有冒泡。
如果我在任何DisplayObject上添加Eventlistener,它会收到Enter frame事件。 如果我使用useCapture = true,则不会收到任何事件。
但不应该所有事件都通过捕获阶段吗? 如果我检查Event目标,则返回接收DisplayObject作为其目标。
传播时是否更改了EnterFrame事件的目标,或者是否创建了新事件并将其传递给每个DisplayObject?
Flash是否与所有DisplayObject保持一个单独的List?因为当DisplayObject未添加到显示树时,甚至会收到EnterFrame事件吗?
答案 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事件 显示树? p>
Sunil D评论中回答了这个问题