Actionscript 3.0确定事件监听器发件人?

时间:2010-02-19 22:28:08

标签: actionscript-3 event-handling sender

是否可以根据事件监听器确定哪个对象调用函数?例如,我在舞台上有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);
 }

3 个答案:

答案 0 :(得分:5)

使用currentTarget

中的属性Event
function myFunction(e:MouseEvent):void {
 var myString:String = "The button that called this function was "+e.currentTarget;
 trace(myString);
}

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我只想补充一点:在函数中你得到的函数有两个属性,有时可能会混淆区分它们:

e.target - 目标将始终返回给您原始的事件调度员,因此如果您点击按钮但是在听父母的情况下,您的目标仍然是按钮。

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

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

相关问题