AS3:target与currentTarget之间的差异

时间:2011-12-15 08:56:36

标签: flash actionscript-3 flex

  

可能重复:
  Difference between e.target and e.currentTarget

我真的不明白这两者之间的区别

event.target and              

event.CurrentTarget and explanation.

有人可以通过一个简单的例子向我解释这个吗?

2 个答案:

答案 0 :(得分:4)

可以使用链接如下。

Click

您可以通过访问以下链接

来查看用户界面的差异

Click

理论上,

实际上恰恰相反。

currentTarget是您设置侦听器的内容。 target是导致事件的原因(什么调用dispatchEvent)。 currentWarget和target对于非冒泡事件都是相同的。对于冒泡事件,当在父级上为子级调度的事件调用addEventListener时,它们会有所不同。然后,currentTarget将成为父级,目标将是子级(实际调度该事件的子级)。

currentTarget通常是您要在事件处理程序中指定的内容,因为这是您添加侦听器的对象。如果您需要知道实际发生事件的对象的源子,那么您只需要引用目标。

答案 1 :(得分:4)

假设您创建了一个TextInput对象。

import fl.controls.TextInput;
import flash.events.MouseEvent;

var t:TextInput;

function init():void {
    t = new TextInput();
    t.x = 100;
    t.y = 100;
    t.width=100;
    t.height=30;
    t.addEventListener(MouseEvent.CLICK, fresult);
    this.addChild(t);
}

function fresult(e:Event):void {
    trace(e.target);
    trace(e.currentTarget);
}

init();

单击TextInput会显示以下内容:

  

[object TextField]
  [object TextInput]

这意味着:

event.target是事件发起的对象。即在这种情况下,单击了TextField,因此事件源自TextField

event.currentTarget是调用侦听器的对象。在这种情况下,TextInput调用了侦听器,因此currentTargetTextInput