1

我可以像这样编写我想要实现的目标:

<mx:Button id="someButton" click="doRememberButton(someButton)" ... />

但如果我能写的话会发现它非常有帮助(我正在整理一个相当大的 UI):

<mx:Button click="doRememberButton(this)" ... />

现在,明显的问题是“this”并不指向 Button,而是指向代码所在文件定义的主要组件(例如 VBox),但如果我对当前的'MXML 组件..

有人会对此有解决方案吗?谢谢!汤姆

4

3 回答 3

2

内联事件处理程序实际上只是包装代码,因此您可以使用事件对象来获取调度程序的详细信息和其他事件信息。像这样:

<mx:Button click="trace(event.target)" />

在您的情况下,您必须更改事件处理程序的签名,例如:

private function doRememberButton(event:Event):void
{
    ...
}

在 MXML 代码中:

<mx:Button click="doRememberButton(event)" />

事件类的目标属性是事件的原始调度程序。还有一个 currentTarget 属性,它是事件链中的当前目标。这与事件冒泡有关。Adobe LiveDocs中有更多相关信息

于 2009-06-30T09:38:08.770 回答
1
private function doRememberButton(ev: Event) {

//this gives your button
ev.currentTarget;


}
于 2009-06-30T09:26:56.627 回答
1

这是您需要的更准确的解决方案

<mx:Button id="someButton" click="doRememberButton(event.currentTarget as Button)"  />

在功能上:

private function doRememberButton(thisBtn:Button):void
{
    ...
}

就是这样!:)

于 2009-07-01T08:44:14.787 回答