是否可以根据事件监听器确定哪个对象调用函数?例如,我在舞台上有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);
}
答案 0 :(得分:5)
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将是相同的,或者如果您要求在冒泡事件的情况下调度该事件的对象。