开始学习Flex,会在别人的代码中经常看到target和currentTarget这两个属性,一般是event.target、event.currentTarget,那他们两个有什么区别呢?
简单说,target是事件的调用对象(eventdispatcher),currentTarget是事件的处理对象(eventprocessor)
下面贴一个实例:
<?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"
creationComplete="init()"
name="application"
>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:layout>
<s:HorizontalLayout/>
</s:layout>
<s:Button id="btn01" name="btn01" label="button1"/>
<s:Button id="btn02" name="btn02" label="button2" click="clickHandle(event)"/>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
private function init():void {
addEventListener(MouseEvent.CLICK,clickHandle);
}
private function clickHandle(event:MouseEvent):void {
Alert.show("target: "+(event.target as DisplayObject).name+" \ncurrentTarget: "+(event.currentTarget as DisplayObject).name);
}
]]>
</fx:Script>
</s:Application>
说明:
1. 点击btn,btn是事件发送者,因此,target是btn;
2. app注册了事件监听器,用于监听MouseEvnet.Click事件,是事件处理者,因此currentTarget是app
3. btn2自己注册了click事件,那么btn2既是事件发送者,又是处理者,因此,target和currentTarget都是btn2,这种情况下,两者是一致的
4. 同时注意,由于app注册了鼠标点击事件,在点击btn2的时候,首先响应的是app的处理器,然后才是btn2的处理器
通过上面的分析,应该比较清楚的区分什么时候用target,什么时候用currentTarget了,在实际编程中实践几次,就不会感到迷惑了。
分享到:
相关推荐
Flex4与Flex3之间的主要区别在于其引入的新组件和外观架构——Spark,以及在布局管理、状态使用、效果实现等方面的改进。虽然从Flex3迁移到Flex4需要一些调整,但总体来说,Flex4提供了一系列增强功能,旨在提高开发...
本文旨在详细介绍Flex3与Flex4之间的主要区别,特别是Flex4相较于Flex3的新功能与改进之处。通过对比分析,帮助开发者更好地理解两者之间的差异,从而根据项目需求选择最适合的技术栈。 #### 二、功能区别 ##### 1...
安装过程与Bison类似,完成后也需要将Flex的可执行文件路径添加到系统路径。Flex的2.5.4a版本是一个稳定版本,能够处理大量的词法分析任务。 在安装这两款工具后,开发者可以开始为QGIS编写词法分析器(由Flex生成...
在"Flex与Bison(中文版)"这本书中,读者可以学习到如何使用这两个工具来构建自己的语言解析器。书本内容可能包括: 1. **基础概念**:介绍词法分析和语法分析的基本原理,以及编译器和解释器的工作流程。 2. **Flex...
标题"flex 和 java交互"指出了一个关键的技术融合,即Flex与Java的整合,允许Flex前端与Java后端进行数据和功能的通信。这种交互通常是通过AMF(Action Message Format)协议实现的,它提供了一种高效的数据序列化...
Flex4与Java通信是开发富互联网应用程序(RIA)时的一项重要技术,允许前端用户界面与后端业务逻辑之间进行高效的数据交换。在本实例中,我们探讨了三种Flex4与Java交互的方式:通过RemoteObject、HTTPService以及...
1. **MXML与ActionScript**:Flex应用主要由两种语言编写,MXML用于定义组件结构和界面布局,而ActionScript则处理逻辑和业务代码。在"万年历记事本"的源码中,MXML文件可能包含了日历视图和记事本界面的定义,而...
- 在Target runtime中选择合适的Flex SDK版本。 - Context root建议直接使用项目名称,例如`testflex`。 - Content folder设置为`WebRoot`,便于统一管理资源。 - Flex War file中选择已下载的BlazeDs.war文件,...
Visual Studio中创建Flex+Bison项目,源码中包含多个vs2010可编译通过的demo,用win_flex_bison-2.5.18 其中包含《Visual Studio中创建Flex+Bison项目.pdf》学习flex bison入门资料《flex与bison中文版.pdf》
【Flex与Java整合】是将Adobe Flex前端UI技术与Java后端服务进行集成,实现富互联网应用程序(RIA)的一种常见方法。本篇文章主要探讨如何在实际操作中配置Flex与Java的整合。 首先,你需要准备以下资源: 1. **...
在“flex 与java后台整合 PPT”这个主题中,我们将探讨如何将Flex前端与Java后端集成,以实现高效的数据通信和应用交互。Flex与Java的整合主要依赖于AMF(Action Message Format)协议,它允许Flex客户端与Java...
2. **Flex SDK与Flex Builder**:Flex SDK是开发Flex应用的基础工具,包含了编译器和库。Flex Builder(现已被Adobe Flash Builder取代)是一个集成开发环境,提供了代码提示、调试和项目管理等功能,使得开发更加...
Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex Flex ...
标题中的"C#与Flex交互"指的是在开发过程中,使用C#作为后端处理逻辑,而Flex作为前端用户界面,两者之间进行数据和功能的通信。Flex是一种基于Adobe AIR和Flash Player运行时的开源框架,主要用于构建富互联网应用...
在本文中,我们将深入探讨Flex如何与服务器端进行通信,以及如何通过提供的Flex源码和C#服务器端源码实现这一过程。 1. **Flex中的数据通信基础** - ** BlazeDS服务**:Adobe的BlazeDS是Flex与服务器端通信的主要...
将Flex与Spring整合,可以充分利用两者的优点,构建出既美观又稳定的应用程序。 **BlazeDS 和 Spring BlazeDS Integration** 整合Flex和Spring的关键在于让Flex客户端能够方便地访问Spring管理的Bean,而BlazeDS和...
FlexModule_j2ee 是一个专为整合Flex与JSP应用设计的组件库,它提供了一个.jar文件,使得在Java服务器端(JSP)与客户端的Adobe Flex之间建立交互变得更加便捷。Flex是一种强大的富互联网应用程序(RIA)开发技术,...
9. **调试与优化**:Flex提供了强大的调试工具,如Flex Builder的调试器,帮助开发者定位和修复问题。此外,通过优化ActionScript代码和组件使用,可以提高Flex应用的性能。 10. **学习资源**:对于初学者,可以...
Flex与Spring整合是将Adobe Flex前端技术和Spring后端框架相结合,实现富互联网应用程序(Rich Internet Applications,RIA)的开发。这种结合使得开发者可以利用Flex的交互性和表现力,以及Spring的强大企业服务...