为什么这个描边元素不会出现在Flex 4中的这个梯形周围?

时间:2013-07-08 14:29:19

标签: actionscript-3 flex graphics flex4 flex-spark

在Flex 4中为以下梯形类获取以下代码:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" width="35" height="140">
    <s:Path data="m 0 34
            l 35 -34
            v 140
            l -35 -34">
        <s:stroke>
            <s:SolidColorStroke weight="1" color="0x000000"/>
        </s:stroke>
        <s:fill>
            <s:SolidColor color="0xCCCCCC"/>
        </s:fill>
    </s:Path>
</s:Group>

这会产生以下图像:

enter image description here

我可以在顶部和底部的对角线边缘周围看到笔划元素,但不能沿着左右两侧的垂直边缘看到。对不起,我很擅长在Flex中制作这样的自定义形状。这有什么不同?谢谢!

编辑:

我还没来得及查看其中一条评论。但是,我运行了几个实验:

1:将数据更改为:

"m 1 34
l 33 -34
v 140
l -33 -34"

产生了这个结果:

enter image description here

2:将数据更改为:

"m 1 34
l 33 -34
v 140
l -20 -34"

产生了这个结果:

enter image description here

在这两个案例的每一个案例中,右边缘都出现并且出现了,但是左边边缘没有出现。

编辑:

值得一提的是,即使在Flash Builder 4.6的Designer选项卡中,也缺少左边缘。

2 个答案:

答案 0 :(得分:3)

假设容器组正在剪切其内容,@ Kodiaks的答案部分正确。然而宽度应该是36的原因并不是他所描述的,而是你必须考虑到行程宽度的事实。
笔划的中心位于形状的实际边界上,因此1px边框将在形状内绘制0.5px,在外部绘制0.5px。在这种特殊情况下,宽度因此变为36px(35 + 2 * 0.5) 你可以通过将边框权重设置为例如来验证这是真正的原因。 4PX;如果你不想剪辑它,你会发现你需要一个39px的容器。

此外,如果你不想在左侧修剪笔划,你必须向右画一点形状(准确地说是笔划重量的一半)。

然后还有一个小错误:你没有关闭形状,导致左手边框不被绘制。只需在Z的末尾添加data即可关闭形状。

所以这是边框权重为'4'的形状的最终结果:

<s:Group width="39" height="140">
    <s:Path data="m 2 34
        l 35 -32
        v 140
        l -35 -34 z">
        <s:stroke>
            <s:SolidColorStroke weight="4" color="0x000000" />
        </s:stroke>
        <s:fill>
            <s:SolidColor color="0xCCCCCC"/>
        </s:fill>
    </s:Path>
</s:Group>

注意:正如你所看到的,我也对高度做了一些调整;否则角落也会被剪掉。

答案 1 :(得分:2)

如果你的形状从0开始并且变为35,它的宽度不是35而是36,则父组的宽度不足以显示边框笔划。