2010-07-22 17 views
3

我想使用Flex 4 API實現自定義HDividedBox。 Splitter應該是動態皮膚的一部分。 我無法找到任何控制皮膚部位位置的例子,這取決於孩子的數量和尺寸。似乎這種控件不適合標準的Flex 4模型:Skin,Control,Layout。有人可以給我一些關於這方面的提示嗎?如何在Flex 4中使用分隔符實現自定義容器?

回答

4

在我們上一個項目中,我們不得不實施分流器,但我們從一個不同的角度來看這個。我們決定建立一個的HDividedBox分量不夠靈活 - 想象中的情況下,你就需要使用額外的分離器擴展用戶界面,讓你有3個區域由2個分路器分...分離器應該得到某種脫鉤從實際拆分的容器中取出。

我會試着總結一下我們的解決方案:

<s:VGroup> 
    <components:Container1 id="container1"/> 
    <components:Splitter id="splitter" 
     topComponent="{container1}" 
     bottomComponent="{container2}" /> 
    <components:Container2 id="container2"/> 
</s:VGroup> 

分離器組件是一個相對簡單的行爲一個組件 - 這取決於你如何拖動它,你更新container1的高度。

我知道我不是你解決技術問題,但有時它是更可行重申這個問題並解決它有點不同的方式。這通常會導致更爲優雅的解決方案,如上例所述。

+0

與您的解決方案,它需要手動指定分路器的問題。我想有一個組件可以在元素之間自動添加分隔線+允許調整他的皮膚(包括分隔線的皮膚)。 – Aleksey 2011-09-02 19:20:02

+0

我的解決方案只是給你的想法。您始終可以擁有一個Flex組,其中您必須以數據驅動的方式創建組件,並將拆分器置於以下位置之間: 'var c1:SomeComponent = new SomeComponent;' 'var c2:SomeComponent = new SomeComponent;' ' var splitter:Splitter = new Splitter(c1,c2,SplitterType.HORIZONTAL);' 'vgroup.addElement(c1);' 'vgroup.addElement(splitter);' 'vgroup.addElement(c2);' – 2011-09-08 15:11:23

相關問題