用图形绘制的Rect显示在BorderContainer的背景下面

时间:2011-11-02 11:59:16

标签: flex drawing

在从BorderContainer继承的Flex组件中,我重写了updateDisplayList函数以绘制矩形:

override protected function updateDisplayList(unscaledWidth : Number, unscaledHeight : Number) : void
{
    this.graphics.clear();
    super.updateDisplayList(unscaledWidth, unscaledHeight); // If ommited the rect is shown properly
    drawRects(); // Just calls graphics.drawRoundedRect
}

问题是我绘制的矩形出现在容器的白色背景下方,而不是在它上面绘制。如果我删除对super.updateDisplayList的调用,我会看到正确绘制的rect。我做错了什么?

2 个答案:

答案 0 :(得分:1)

是的,使用图形API将始终绘制到实际的精灵,低于一切。不使用图形,而是使用Spark原语,例如Rect。

AS3:

var rect:Rect = new Rect();
rect.id = "backgroundRect";
rect.fill = new SolidColor();
rect.fill.color = 0xFFFFFF;
addElement(rect);

MXML:

<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0"  >
    <s:fill>
        <s:SolidColor color="#FFFFFF"/>
    </s:fill>
</s:Rect>
编辑:如果您没有使用Spark,那么我想解决方案是使用轻量级图形组件(抱歉模糊,我对MX的了解非常有限)并在该组件上使用图形API。那样,diplay顺序应该有效。

答案 1 :(得分:0)

OP在这里。似乎通过将绘图代码移动到我的组件的皮肤,一切都按预期工作。