为什么使用s:Line而不是mx:HRule?

时间:2011-05-24 13:45:09

标签: flex flex-mx flex-spark

使用 mx:HRule mx:VRule 时,Flash Builder会建议使用 s:Line 。 我为什么要写这样的东西:

<s:Line xFrom="0" xTo="245" yFrom="0" yTo="1"/>

而不是

<mx:Hrule width="100%" />

如何获得相对尺寸? (百分比)

3 个答案:

答案 0 :(得分:15)

因为mx组件正在逐步淘汰,以获得更好的可换肤的Spark组件。为什么你不能使用宽度= 100%的线?顺便说一句,该线段不会显示任何内容,因为您没有设置笔划。这就是我想你想要的:

<s:Line width="100%">
   <s:stroke>
      <s:SolidColorStroke color="#000000" weight="1" caps="square"/>
   </s:stroke>
</s:Line>

如果你真的只想让它只是一个标签,你可以随时创建一个新的组件,称之为HRule并具有默认样式。

答案 1 :(得分:5)

嗯,你不想写那样的东西......

我可能会更喜欢这样写..

<s:Line width="100%">
            <s:stroke>
                <s:SolidColorStroke caps="none" color="#AF0000" joints="miter" miterLimit="4"
                                    weight="2"/>
            </s:stroke>
            <s:filters>
                <s:BevelFilter angle="45.0" blurX="1" blurY="1" distance="1"
                               highlightAlpha="1.0" highlightColor="#FFFFFF" knockout="false"
                               quality="2" shadowAlpha="1.0" shadowColor="#000000" strength="1"
                               type="inner"/>
            </s:filters>
</s:Line>

但这完全取决于你。任何火花形状基元都可以使用相对定位和尺寸来编写。

修改

Jax打败了我:)

答案 2 :(得分:2)

我有一个使用S:Line元素的错误,它没有填满我皮肤内的100%。 我将它替换为S:SkinableContainer元素,如下所示:

<s:SkinnableContainer backgroundColor="Lime" width="100%" height="10"/>

我发现这对我来说是一个很好的解决方案,它也可以像你提到的那样在代码中节省空间。