【发布时间】:2011-12-09 19:07:53
【问题描述】:
event.bubbles 到 false 对于任何事件与在处理事件时设置 event.stopPropagation() 或 stopImmediatePropagation() 有什么区别?
我将 Flex4 与 AS3 一起使用。
【问题讨论】:
标签: actionscript-3 apache-flex event-bubbling event-propagation
event.bubbles 到 false 对于任何事件与在处理事件时设置 event.stopPropagation() 或 stopImmediatePropagation() 有什么区别?
我将 Flex4 与 AS3 一起使用。
【问题讨论】:
标签: actionscript-3 apache-flex event-bubbling event-propagation
在这篇文章中找到的信息 - Introduction to event handling in ActionScript 3.0 更具示范性和易于理解性。它将增强@Jason Sturges 上述接受的答案。
事件冒泡和事件捕获是事件的两个方面。如果将 event.bubbles 设置为 false,则表示该事件被标记为非冒泡事件。
气泡:指示事件是否是冒泡(和捕获)事件。这并不意味着该事件经历了或正在经历捕获或冒泡阶段,而是一种可以发生的事件。
下图(来自上述文章)显示了事件是如何进行的。
stopPropagation() 和stopImmediatePropagation() 的区别在下面的图片中会更清楚。
停止传播:
StopImmidiatePropagation :
【讨论】:
The accepted answer didn't help at all :/ 仍然有 10 个赞? ;) 他在需要时在同一天回答。这也是我赞成的好答案。
将bubbles 设置为false 意味着事件根本不会在显示列表中冒泡。
stopPropagation() 和 stopImmediatePropagation() 使当前事件侦听器最后处理事件。
stopPropagation() 和 stopImmediatePropagation() 之间的区别在于,stopImmediatePropagation() 不仅会阻止事件移动到下一个节点,还会阻止该节点上的任何其他侦听器捕获它们的事件。
【讨论】:
看例子:
object.addEventListener( MouseEvent.CLICK, functionOne );
object.addEventListener( MouseEvent.CLICK, functionTwo );
如果functionOne 包含event.stopPropagation(),functionTwo 也会被调用。
如果它包含event.stopImmediatePropagation(),functionTwo 将被忽略。
【讨论】: