2013-06-20 65 views
0

有沒有辦法從mxml而不是從actionscript訪問自定義組件的兒童屬性。Flex訪問自定義組件的子項屬性

例如,我有我想要做這樣的事情

<s:HGroup> 
    <components:A> 
     /*I want to access properties of this children objects*/ 
     <childA width="20"/> 
     <childB color="0xFFFFFF"/> 
    </components:A> 

    <components:A> 
     /*And here too*/ 
     <childA width="60"/> 
     <childB color="0x000000"/> 
    </components:A> 
</s:HGroup> 

回答

1

您可以在ActionScript做到這一點的應用程序組件 「A」

<s:Group> 
    <mx:UIComponent id='childA'/> 
    <mx:UIComponent id='childB'/> 
</s:Group> 

而且地方;但不在MXML中。在ActionScript中:

componentAInstance.childA.width = 20; 
componentAInstance.childB.setStyle('color',0xFFFFFF); 

這就是我們所說的封裝中的一個可怕的突破;因爲「父母」不需要知道其子女的實施細節。

ComponentA應該知道如何確定自己的孩子的大小和位置;在這追逐childA和childB。它不應該需要ComponentA父母的幫助。

您可能會在閱讀此博客文章時發現有關如何使用component's should communicate with each other的好處。

+0

是的,但我想知道mxml方式。問題是:我有特定的加載程序組件,它有超過4個外觀參數和一些包含該加載程序的組件。這個組件可以佔用應用程序的整個屏幕,或者可以是32乘32像素。我正在考慮從mxml控制裝載程序的外觀,而沒有從代碼中進行太多的自定義。我想我現在必須通過容器組件傳遞這個屬性。 – Komlev

+2

@Komlev爲什麼不能使父對象的這4個參數屬性。設置時,如果孩子存在,它可以將這些屬性應用於孩子。 –

+0

這是一個額外的工作,我知道它是最小的,但它在那裏,我想知道有沒有辦法使沒有交替父類。我希望mxml能給我一些「語法糖」。 – Komlev