2009-06-30 90 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 
{ 
    ... 
} 

這就是它! :)

相關問題