Flex 理解事件流和事件冒泡

本文介绍了FlashPlayer中的事件流机制,包括捕获期、目标期和冒泡期的概念,并通过一个具体的MXML代码示例展示了事件如何从子组件传递到父组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

不论何时触发事件,Flash Player都会发布事件。如果事件目标不是屏幕上的可视元素,Flash Player可以直接向指定目标发布事件对象,例如Flash Player会直接向HTTPService组件发布result事件。然而,如果是屏幕中的可视元素,Flash Player发布事件时会让事件从最外部容器(即Application)开始向下传递到目标组件,然后回到Appliation容器。

事件流描述了事件对象如何在应用程序中进行传递。

事件流从概念上可分为3个部分:

1.      捕获期  包含了从根应用程序到事件目标之间的所有容器。

2.      目标期  由目标节点单独构成。

3.      冒泡期  包含了从目标返回根应用程序过程中遇到的所有元素。

 

事件可以在子组件中触发,并且可以让其父组件收到事件。下面这段代码演示了这一点:

 

<?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="955" minHeight="600">

    <fx:Script>

       <![CDATA[

           import mx.controls.Alert;

           protected function clickHandler(event:Event):void{

              var msg:String = event.target.toString() + "clicked"; 

              Alert.show(msg);

           }

       ]]>

    </fx:Script>

    <s:Panel id="mypanel" click="clickHandler(event)">

       <mx:HBox id="hbox"

               click="clickHandler(event)">

           <mx:Button id="mybutton" click="clickHandler(event)"/>

       </mx:HBox>

    </s:Panel>

</s:Application>

 

若用户单击了Button, Flash Player 会向事件流中发布一个事件对象。该对象从Application开始移动,先移动到Panel, 再移动到Hbox, 最后到达Button.接下来事件对象开始“冒泡”, 经过Hbox Panel再次回到Application.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值