在从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。我做错了什么?
答案 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在这里。似乎通过将绘图代码移动到我的组件的皮肤,一切都按预期工作。