flex currenTarget与 target 的区别

转载 2012年03月24日 14:04:49

开始学习Flex,会在别人的代码中经常看到target和currentTarget这两个属性,一般是event.target、event.currentTarget,那他们两个有什么区别呢?

简单说,target是事件的调用对象(event dispatcher),currentTarget是事件的处理对象(event processor) 

下面贴一个实例:

<?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了,在实际编程中实践几次,就不会感到迷惑了。 

相关文章推荐

Flex的 Event中属性currentTarget与target的区别

Flex的 Event中属性currentTarget与target的区别 1、区别 (1)currentTarget是事件的处理对象(event processor) (2)target是事件的...

FLEX学习笔记:TileList点击到不同的部分,返回的event.target类型

TileList点击到选项都是event.target = TileListItemRenderer 点击到最后一个空白处的时候都是 ListBaseContentHolder 类型的。 附上一篇文...

Flex编译器参数中-swf-version与-target-player之关系

转载:http://zengrong.net/post/1486.htm   今天下载了Flex 4.6 SDK后,发现framework/flex-config.xml中的默认-swf-vers...

Flex编译器参数中-swf-version与-target-player之关系

2012-11-07更新:更新Flash Player 11.5/AIR 3.5正式版发布日期。 2012-10-10更新:加入Flash Player 11.5/AIR 3.5的对应关系;...

this与e.target的区别

在JavaScript事件机制中,this与e.target都是代表DOM节点,但是它们之间存在什么区别呢? 话不多说,先上代码: E.TARGET测试 #father{ ...

深入解析Oracle 10g中SGA_MAX_SIZE和SGA_TARGET参数的区别和作用

原文链接:http://m.blog.csdn.net/blog/aaron8219/40037005 SGA_MAX_SIZE是从9i以来就有的作为设置SGA大小的一个参数,而SG...

a标签中target设置为blank和_blank有什么区别?

a标签中target设置为blank和_blank有什么区别? 原创 2010年04月06日 00:30:00 标签:iframe /测试 /c 11805 ...

DX9与DX11shader编写中SV_POSITION与POSITION和SV_Target与COLOR之间的区别(一)

DirectX的一大特色之一便是Shader渲染,包括顶点Shader渲染以及像素Shader渲染。设置Shader机制是为了使程 序员能够控制GPU绘制顶点或像素的方式,简单的说,我们设计的Sh...

MinSdkVersion, targetSdkVersion, target API level的区别(转)

转自:http://blog.csdn.net/champgauss/article/details/7291189  MinSdkVersion, targetSdkVersion, targ...

从头学android_minSdkVersion、targetSdkVersion、maxSdkVersion、target API level的区别

今天在网上看到有人总结出了这四者的区别,抄下来,发到博客上,一方面自己查看,也方便解除其他朋友的困扰。 这里面的minSdkVersion、targetSdkVersion、maxSdkVe...
  • Mr_Seng
  • Mr_Seng
  • 2016年07月27日 21:17
  • 207
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:flex currenTarget与 target 的区别
举报原因:
原因补充:

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