flex_停止事件传播说明示例;

原创 2012年03月22日 17:41:30
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               minWidth="1024" minHeight="768" pageTitle="TheStudioOfCenyebao"
               applicationComplete="initFn()">
    
    <!-- Demo_如何停止事件传播
        猜想:事件流_事件触发顺序
            首先被触发的是按钮里边添加的监听器(在MXML中添加),接着是通过addEventListener()添加的监听器,
        接着事件就冒泡到按钮父组件HGroup,触发父组件里边的监听器。
            不过使用event.stopPropagation()或者event.stopImmediatePropagation()都会阻止事件从按钮冒泡
        到其父组件,两者的区别就是stopPropagation()函数会在给定组件(按钮)上的所有其他事件监听器完成对这个
        事件(比如MouseEvent)的响应之后停止传播,而stopImmediatePropagation则是直接停止此事件传播。
    -->
    
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            
            protected function initFn():void{
                // 添加事件监听器;
                button.addEventListener(MouseEvent.CLICK, onClick);
                box.addEventListener(MouseEvent.CLICK, onParentClick);
            }
            
            protected function button_clickHandler(event:MouseEvent):void
            {
                Alert.show("MXML click event.", "MXML Event");
                trace("第一个被触发 Event");
                //event.stopPropagation();    // 事件停止传播--但是第二个监听器会触发;
                event.stopImmediatePropagation();    // 停止传播--后面所有监听器都不会触发;
            }
            
            protected function onClick(event:Event):void{
                Alert.show("AS event.Calling stopPropagation", "AS Event");
                trace("第二个被触发 Event");

            }
            
            protected function onParentClick(event:Event):void{
                // 事件永远不会传播(冒泡)到父组件,不管使用event.stopPropagation()或者event.stopImmediatePropagation()。
                Alert.show("You should never see this alert.", "Parent Event");
                trace("第三个被触发 Event");
            }
            
        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- 非可视元素 -->
    </fx:Declarations>
    
    <!--view-->
    <s:HGroup id="box" horizontalCenter="0" verticalCenter="0">
        <s:Button id="button" label="FireEvent" click="button_clickHandler(event)"/>
    </s:HGroup>
    
</s:Application>


相关文章推荐

Flex停止事件传播说明示例

spring事件传播

  • 2017年09月11日 14:54
  • 6.56MB
  • 下载

andorid中基于回调事件传播返回true与false的区别

明天 接着写。

[js点滴]JavaScript事件传播02

事件的传播传播的三个阶段当一个事件发生以后,它会在不同的DOM节点之间传播(propagation)。这种传播分成三个阶段: 第一阶段:从window对象传导到目标节点,称为“捕获阶段”...

Android编程学习笔记 之 基于回调的事件传播

Android的事件处理机制分为: ①监听 ②回调。 回调机制,就是用组件自身来处理自身的事件,而不是像监听机制一样使用事件监听器。 简单的说,就是写一个类,继承View类或者View类的子类(如Bu...

android控件的事件传播机制

事件相关的三个事件方法 dispatcherEvent 负责分发事件的, 函数主要作用是来决定当前的事件是交由自己消费处理,还是交由子控件处理。 返回true,表示事件不再向下分发,事件...

jQuery阻止事件传播

要删除之前已经分配给一个标签的事件,jQuery的unbind()允许做到这一点。要使用它,首先创建一个jQuery对象,带有想要从其上删除事件的元素。然后,添加unbind()函数,传递给它一个带有...

细说 jQuery - 事件传播

Javascript 是如何决定由哪个元素来处理事件的,以及 jQuery 又是如何优化处理这个问题的,这些都涉及到了事件传播。 事件传播策略 当页面内的发生一个事件时,每个层次的 DOM 元素都有机...

01期:web浏览器事件传播机制(捕获和冒泡)

从“陨石坠落”和“公交路线”的角度来理解web事件传播机制

web2.0中的事件传播机制

这里是核心理论 也就是js事件触发机制的原理 简单来说capture就是事件传播从window对象的开始读到触发的DOM对象上(即触发的对象), 而bubble则是从触发的DOM开始回到windo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:flex_停止事件传播说明示例;
举报原因:
原因补充:

(最多只允许输入30个字)