2012-09-22 33 views
0

在Flex中,我想創建一些變量來存放整個應用程序中使用的ui組件字典。理想情況下,將在應用程序組件的功能,將返回組件的ID:返回Flex中的只讀ui組件

public function getComponent4Id(id:String):UIComponent {} 

然後我會使用下面一行訪問組件:

var myComponent:UIComponent = FlexGlobals.topLevelApplication.getComponent4Id("someId"); 

現在,唯一的問題是:我想組件返回爲只讀狀態。
從應用程序的每個角落閱讀myComponent的一些屬性非常方便,但我不希望我的開發人員濫用它並更改myComponent

是否可以退還myComponent的副本?或者是否有可能以某種方式使其成爲只讀?

回答

3

在您描述的情況下,無法檢索只讀組件。

您可以通過在沒有設置方法的情況下實現get方法來創建只讀變量。類似這樣的:

public var get myValue():UIComponent{ 
return UIComponent; 
} 

這將允許您從組件中檢索UIComponent實例myValue;但你無法設置它。

但是,這不會阻止人們更改返回的UIComponent的屬性,除非這些屬性也是以只讀方式實現的。

我會補充說,已經有一個方法,getChildByName()按名稱檢索子組件。如果您有父母的實例,則可以使用它來訪問子項。所有這一切說,我不知道我完全理解你希望達到的目標;與此功能。