【问题标题】:Event Bubbling, and Stop Propagation事件冒泡和停止传播
【发布时间】:2011-12-09 19:07:53
【问题描述】:

event.bubblesfalse 对于任何事件与在处理事件时设置 event.stopPropagation()stopImmediatePropagation() 有什么区别?

我将 Flex4 与 AS3 一起使用。

【问题讨论】:

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


    【解决方案1】:

    在这篇文章中找到的信息 - Introduction to event handling in ActionScript 3.0 更具示范性和易于理解性。它将增强@Jason Sturges 上述接受的答案。

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

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

    下图(来自上述文章)显示了事件是如何进行的。

    stopPropagation()stopImmediatePropagation() 的区别在下面的图片中会更清楚。

    停止传播:

    StopImmidiatePropagation :

    【讨论】:

    • 很好的答案,来源是 Adob​​e。接受的答案根本没有帮助:/
    • @BattleCity The accepted answer didn't help at all :/ 仍然有 10 个赞? ;) 他在需要时在同一天回答。这也是我赞成的好答案。
    【解决方案2】:

    bubbles 设置为false 意味着事件根本不会在显示列表中冒泡。

    stopPropagation()stopImmediatePropagation() 使当前事件侦听器最后处理事件。

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

    【讨论】:

      【解决方案3】:

      看例子:

      object.addEventListener( MouseEvent.CLICK, functionOne );
      
      object.addEventListener( MouseEvent.CLICK, functionTwo );
      

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

      【讨论】:

        猜你喜欢
        • 2016-01-25
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        • 2012-09-30
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多