2009-06-30 91 views
1

我的代码,我想实现这样的:在Flex中,有没有像MXML组件的'this'引用?

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

,但会发现它非常有帮助的(我组建了一个相当大的UI),如果我可以这样写:

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

现在,显而易见的问题是,'this'并不指向Button,而是指向代码所在文件(例如VBox)所定义的主要组件,但如果我有一些对'current'的引用会很有帮助, MXML组件..

有没有人这是一个解决方案吗?谢谢! 汤姆

回答

2

内联事件处理程序确实是刚刚结束的代码,所以您可以使用事件对象来获取调度员及其他事件信息的细节。像这样:

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

在你的情况,你必须改变你的事件处理程序的签名,例如:

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

而在MXML代码:

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

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

+0

或doRememberButton(event.target)不要求您更改现有的代码。 – airportyh 2010-01-04 17:17:44

1
private function doRememberButton(ev: Event) { 

//this gives your button 
ev.currentTarget; 


} 
1

更多这方面的信息,这里是更精确的方式你所需要

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

在功能的解决方案:

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

这就是它! :)

相关问题