2010-07-22 58 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

相关问题