您的位置:首页 > 其它

flex 事件中currentTarget和target区别

2011-11-14 13:26 330 查看
简单说,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

说明:

点击btn,btn是事件发送者,因此,target是btn;
app注册了事件监听器,用于监听MouseEvnet.Click事件,是事件处理者,因此currentTarget是app
btn2自己注册了click事件,那么btn2既是事件发送者,又是处理者,因此,target和currentTarget都是btn2,这种情况下,两者是一致的

同时注意,由于app注册了鼠标点击事件,在点击btn2的时候,首先响应的是app的处理器,然后才是btn2的处理器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: