事件冒泡和停止传播

时间:2011-10-18 04:57:50

标签: actionscript-3 flex event-bubbling event-propagation

任何事件的event.bubblesfalse之间有何区别,处理事件时设置event.stopPropagation()stopImmediatePropagation()会有什么区别?

我正在使用带有AS3的Flex4。

3 个答案:

答案 0 :(得分:32)

本文提供的信息 - Introduction to event handling in ActionScript 3.0更具说明性且易于理解。它将增强@Jason Sturges的上述接受答案。

事件冒泡和事件捕获是事件的两个方面。如果将event.bubbles设为false,则表示该事件被标记为非冒泡事件。

  

bubbles :指示事件是否是冒泡(和捕获)的事件。这并不意味着事件经历或正在经历捕获或泡沫阶段,而是一种可以发生的事件。

下图(来自上文)显示了事件如何完成整个过程。

Event capturing and bubbling

以下图片中stopPropagation()stopImmediatePropagation()的差异会更明显。

StopPropagation:

stopPropagation

StopImmidiatePropagation:

stopImmediatePropagation

答案 1 :(得分:18)

bubbles设置为false表示该事件根本不会显示在显示列表中。

stopPropagation()stopImmediatePropagation()使当前事件侦听器成为处理事件的最后一个事件。

stopPropagation()stopImmediatePropagation()之间的区别在于stopImmediatePropagation()不仅会阻止事件移动到下一个节点,还会阻止该节点上的任何其他侦听器捕获他们的活动。

答案 2 :(得分:3)

看一下例子:

object.addEventListener( MouseEvent.CLICK, functionOne );

object.addEventListener( MouseEvent.CLICK, functionTwo );

如果functionOne包含event.stopPropagation(),则也会调用functionTwo。 如果它包含event.stopImmediatePropagation(),则functionTwo将被忽略。