注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

IOS & JAVA KEY

(iMilo)

 
 
 

日志

 
 
关于我

All the splendor in the world is not worth a good friend!! Hello my friend!!

网易考拉推荐

Flex了解事件对象的冒泡机制  

2010-05-02 15:58:37|  分类: Flex4 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

1、  创建一个Flex Project,名称为:Demo;

2、  切换到Design模式下,添加一个Panel和一个Button,其效果如下:

2010年5月2日 - TEANA - JAVA KEY

3、  切换到Source模式下,为程序添加事件,其代码如下:

<?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">

    <fx:Script>

        <![CDATA[

            import mx.controls.Alert;

            private function showDif(event:MouseEvent):void

            {

                Alert.show("目标ID = " + event.target.id +

                "\n 当前目标ID = " + event.currentTarget.id);

            }

        ]]>

    </fx:Script>

    <s:Panel x="104" y="113" width="250" height="200"

             title="target和currentTarget" fontSize="14"

             fontFamily="Times New Roman" color="#F30909"

             id="panel_object">

        <s:Button x="89" y="54" label=" 测 试 "  id="button_object"

                  click="showDif(event)"/><!—事件由Button控制-->

    </s:Panel>

</s:Application>

单击测试按钮,效果如下:

2010年5月2日 - TEANA - JAVA KEY

4、  修改源程序,事件由Panel触发,代码如下:

<?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">

    <fx:Script>

        <![CDATA[

            import mx.controls.Alert;

            private function showDif(event:MouseEvent):void

            {

                Alert.show("目标ID = " + event.target.id +

                "\n 当前目标ID = " + event.currentTarget.id);

            }

        ]]>

    </fx:Script>

    <s:Panel x="104" y="113" width="250" height="200"

             title="target和currentTarget" fontSize="14"

             fontFamily="Times New Roman" color="#F30909"

             id="panel_object"  click="showDif(event)"><!—事件由Panel触发-->

        <s:Button x="89" y="54" label=" 测 试 "  id="button_object" />

    </s:Panel>

</s:Application>

运行程序后,点击测试按钮以及点击Panel面板,效果如下:

2010年5月2日 - TEANA - JAVA KEY      2010年5月2日 - TEANA - JAVA KEY

记住:

①     target对象总是抛出事件的对象,currentTarget对象是处理事件的对象,很多情况下他们是相同的,但不总是这样。

②     所有Event对象都有target 和currentTarget属性,target 属性可引用事件分派对象,currentTarget属性可引用正在被检测事件监听器的当前节点。

③     在事件将在控件链中向上冒泡,在此过程中target 始终不变,currentTarget在每个向上移动的过程中及时改变。

④     例如当用户点击一个Button控件,很可能事件派发者是Button的内部子组件UITextField,事件向上冒泡过程中target 始终为 UITextField不变,但currentTarget会逐步冒泡到Button组件,这时,触发了在Button上监听的Click事件处理函数。

⑤     开发人员一般使用event.currentTarget属性,event.target 属性很少使用。

 

  评论这张
 
阅读(2277)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017