任何事件的event.bubbles
与false
之间有何区别,处理事件时设置event.stopPropagation()
或stopImmediatePropagation()
会有什么区别?
我正在使用带有AS3的Flex4。
答案 0 :(得分:32)
本文提供的信息 - Introduction to event handling in ActionScript 3.0更具说明性且易于理解。它将增强@Jason Sturges的上述接受答案。
事件冒泡和事件捕获是事件的两个方面。如果将event.bubbles设为false,则表示该事件被标记为非冒泡事件。
bubbles :指示事件是否是冒泡(和捕获)的事件。这并不意味着事件经历或正在经历捕获或泡沫阶段,而是一种可以发生的事件。
下图(来自上文)显示了事件如何完成整个过程。
以下图片中stopPropagation()
和stopImmediatePropagation()
的差异会更明显。
StopPropagation:
StopImmidiatePropagation:
答案 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
将被忽略。