flex 事件中currentTarget和target区别

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

以一个实例来说吧
 1  <? xml version="1.0" encoding="utf-8" ?>
 2  < mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml"  layout ="vertical"  name ="app"
 3      initialize ="init()" >
 4      
 5       < mx:Button  id ="btn"  name ="btn"  label ="按钮1" />
 6      
 7       < mx:Button  id ="btn2"  name ="btn2"  label ="按钮2"  click ="clickHandler(event)"   />
 8      
 9       < mx:Script >
10           <![CDATA[
11              import mx.controls.Alert;
12              private function init(): void
13              {
14                  addEventListener(MouseEvent.CLICK, clickHandler);                 
15              }
16              
17              private function clickHandler(event: MouseEvent): void
18              {
19                  Alert.show("target: " + (event.target as DisplayObject).name
20                      + "\ncurrentTarget: " + (event.currentTarget as DisplayObject).name);
21              }
22           ]]>
23       </ mx:Script >
24  </ mx:Application >
25 

说明:
  1. 点击btn,btn是事件发送者,因此,target是btn;
  2. app注册了事件监听器,用于监听MouseEvnet.Click事件,是事件处理者,因此currentTarget是app
  3. btn2自己注册了click事件,那么btn2既是事件发送者,又是处理者,因此,target和currentTarget都是btn2,这种情况下,两者是一致的
  4. 同时注意,由于app注册了鼠标点击事件,在点击btn2的时候,首先响应的是app的处理器,然后才是btn2的处理器

你可能感兴趣的:(flex 事件中currentTarget和target区别)