Flex: почему линия скрыта фоном canvas - PullRequest
0 голосов
/ 22 марта 2010

Я хочу, чтобы MyCanvas рисовал линии на себе, но они, кажется, рисуются за фоном.Что происходит и как мне это сделать?

Main.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:my="*">
    <my:MyCanvas width="300" height="300" id="myCanvas"></my:MyCanvas>
    <mx:Button label="Draw" click="myCanvas.Draw();"></mx:Button>
</mx:Application>

MyCanvas.as

package  
{
    import mx.containers.Canvas;
    public class MyCanvas extends Canvas
    {
        public function MyCanvas() 
        {
            this.setStyle("backgroundColor", "white");
        }
        public function Draw():void
        {
            graphics.lineStyle(1);
            graphics.moveTo( -10, -10);
            graphics.lineTo(width + 10, height + 10);
        }
    }
}

Спасибо.

1 Ответ

2 голосов
/ 22 марта 2010

Объект Graphics самого DisplayObject всегда располагается внизу DisplayList. В этом случае возможно, что перекрывающий дочерний элемент добавляется суперклассом, возможно, когда вы применяете белый фон (не уверен, что я не эксперт по Flex).

Однако, может быть, безопаснее попытаться добавить специально выделенного ребенка для рисования. Таким образом, вы сможете лучше контролировать его видимость:

package  
{
    import mx.containers.Canvas;
    public class MyCanvas extends Canvas
    {

        private var shape:Shape;

        public function MyCanvas() 
        {
            this.setStyle("backgroundColor", "white");

            addChild(shape = new Shape());
        }
        public function Draw():void
        {

            shape.graphics.lineStyle(1);
            shape.graphics.moveTo( -10, -10);
            shape.graphics.lineTo(width + 10, height + 10);
        }
    }
}
...