flex中 event.target與 event.currentTarget的使用
阿新 • • 發佈:2019-02-02
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