2011-12-05 50 views
2

我希望我的問題措辭好。當在Flex中爲當前組件調用一個函數時,有沒有辦法通過'self'或'this'?

我知道你可以傳遞組件的'id',但我只是想知道是否有更通用的方法。我曾嘗試使用'this'(如下面的示例所示),但'this'關鍵字指的是應用程序。

例子:

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

而下面的功能不能正常工作(因爲它是錯誤的類型):

someFunc(comp : UIComponent) : void { 
    comp.label = 'Change label'; 
} 

如果我有20個組件,我想能夠調用相同的函數,而不使用「id」作爲不同的組件。

有沒有辦法?

回答

4

'this'關鍵字是指應用程序。

MXML組件,在這個」關鍵字將引用‘頂級’的標籤。該不會是在許多情況下,應用程序

在你的情況,我會傳中,單擊事件並使用目標或currentTarget當前性能弄清楚成分被點擊其中:

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

someFunc(event:MouseEvent) : void { 
    trace(event.target); 
    trace(event.currentTarget); 
    (event.target as Button).label = "Change Label"; 
} 

我敢肯定,你需要的目標,因爲這將永遠是調度該事件的組件

+0

的「目標」是沒有的ay保證是按鈕,如果'mouseChildren'被啓用,它很可能不會。然而'currentTarget'保證是監聽器所附的組件。 – merv

+0

按鈕組件僅作爲示例使用。對於我想要使用「這個」或「自我」的任何組件而言更是如此。我總是忘記事件處理程序中的target和currentTarget變量......我認爲這是Flex中最接近'this'或'self'的地方。只是一個側面說明...我總是困惑什麼時候使用event.target或event.currentTarget! 感謝您的答覆@ www.Flextras.com –

+0

@merv感謝您的意見。是的,event.currentTarget的作品。 –

相關問題