Rect, нарисованный с графикой, появляется под фоном BorderContainer - PullRequest
1 голос
/ 02 ноября 2011

В компоненте Flex, который наследуется от BorderContainer, я переопределяю функцию 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, я вижу, что прямоугольник нарисован правильно. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Да, использование графического 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 на этом компоненте. Таким образом, порядок воспроизведения должен работать.

0 голосов
/ 02 ноября 2011

ОП здесь.Кажется, что при перемещении кода рисования на обложку моего компонента все работает, как ожидалось.

...