1. 程式人生 > >flex中 event.target與 event.currentTarget的使用

flex中 event.target與 event.currentTarget的使用

target:事件指向的目標,但並非事件的派發者。 在一個事件整個生命週期中所有被派發的事件處理函式內部的target物件是一樣的,每個被監聽者派發的事件處理函式中的target一定都是同一個物件。
currentTarget:事件的派發者。呼叫註冊在事件上的回撥函式的那個物件,簡單的說就是派發事件的物件

例項分析如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" name="app"
initialize="init()">
<mx:Button id="btn" name="btn" label="按鈕1"/>
<mx:Button id="btn2" name="btn2" label="按鈕2" click="clickHandler(event)" />
<mx:Script>
  <![CDATA[
  import mx.controls.Alert;
  private function init(): void
    {
       addEventListener(MouseEvent.CLICK, clickHandler);
    }
   
  private function clickHandler(event: MouseEvent): void
    {
        Alert.show("target: " + (event.target as DisplayObject).name+ "\ncurrentTarget: " + (event.currentTarget       as DisplayObject).name);
      }
    ]]>
 </mx:Script>
</mx:Application>

測試結果為:

1.點選空白區域:  
target: app  currentTarget: app  
2.點選按鈕1:  target: btn  currentTarget: app  
3.點選按鈕2先後出現兩個alert視窗:  
alert 
1(stage的click事件響應):  
target: btn2  currentTarget: app  alert 
2(按鈕2的click事件響應):  
target: btn2  currentTarget: btn2