在Flex中,是否有类似于MXML组件的“this”参考?

时间:2009-06-30 09:02:23

标签: flex mxml

我可以编写我想要实现的内容:

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

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

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

现在,明显的问题是'this'没有指向Button,而是指向代码所在的文件所定义的主要组件(例如VBox),但如果我有一些参考,那将是一个很大的帮助到'当前'的MXML组件..

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

3 个答案:

答案 0 :(得分:2)

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

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

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

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

在MXML代码中:

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

事件类的target属性是事件的原始调度程序。还有一个currentTarget属性,它是事件链中的当前目标。这涉及事件冒泡。 Adobe LiveDocs

中有更多相关信息

答案 1 :(得分:1)

private function doRememberButton(ev: Event) {

//this gives your button
ev.currentTarget;


}

答案 2 :(得分:1)

这是一个更准确的解决方案

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

在函数:

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

就是这样! :)