1

是否可以根据事件侦听器确定哪个对象调用函数?例如,我在舞台上有 2 个按钮,当它们被点击时会调用相同的功能。我想要确定哪个按钮是发件人的功能。

firstButton.addEventListener(MouseEvent.CLICK, myFunction);
secondButton.addEventListener(MouseEvent.CLICK, myFunction);

function myFunction(e:MouseEvent):void
 {
 var myString:String = "The button that called this function was (??)";
 trace(myString);
 }
4

3 回答 3

5

使用Event类中的currentTarget属性

function myFunction(e:MouseEvent):void {
 var myString:String = "The button that called this function was "+e.currentTarget;
 trace(myString);
}
于 2010-02-19T22:32:05.537 回答
1

在 myfunction 中,e.currentTarget 应该包含对发送事件的按钮的引用。

于 2010-02-19T22:32:20.397 回答
1

我只想补充一点:在函数中获得的事件对象中,有两个属性有时会让人混淆以区分它们:

e.target - 目标将始终将事件的原始调度程序返回给您,因此如果您单击一个按钮但在听父项的位置,您的目标仍然是按钮。

e.currentTarget - currentTarget 返回您从事件或 adobes 语言中询问的对象“正在使用事件侦听器主动处理 Event 对象的对象。”。

所以你的 currentTarget 和 target 可以产生不同的结果,你需要记住这一点。ps 如果您的事件没有冒泡(非可视/非用户交互鼠标事件),那么您的 currentTarget 和目标将是相同的,或者如果您在冒泡事件的情况下询问调度事件的对象。

于 2010-04-16T18:17:27.510 回答