Проблемы с рисованием фигур в Flex 4 / AS3 - PullRequest
2 голосов
/ 31 марта 2010

Я просто пытаюсь нарисовать прямоугольник внутри панели, используя flex4. Я использую искру вместо мх. Он жалуется на то, что addchild заменяется на addelement; однако дополнение ожидает тип ivisualcomponent. Я думаю, что спрайт должен быть такого типа; Тем не менее, он сообщает об ошибке при попытке использовать приведенный ниже код ... Я пробовал несколько разных способов. Я думаю, что упускаю что-то очень основное в flex 4. Любое просветление будет высоко ценится! : -D

private function drawRectangle(e:MouseEvent):void{
    var s:Sprite = new Sprite();
    s.graphics.beginFill(0x00ff00, 0.5);
    s.graphics.drawRect(e.localX,e.localY,50,50);
    s.graphics.endFill();
    canvas.addChild(s);
}

Ответы [ 3 ]

4 голосов
/ 31 марта 2010

Sprite не реализует IVisualComponent. (Проверьте документы: http://www.eonflex.com/flex/4.1/langref/flash/display/Sprite.html)

Вам нужно добавить UIComponent для хранения спрайта. Что-то вроде:

private function drawRectangle(e:MouseEvent) : void {
    var s:Sprite = new Sprite();
    var c:UIComponent = new UIComponent();

    c.addChild(s);
    canvas.addChild(c);
}
3 голосов
/ 05 апреля 2011

Да, мы можем сделать это с помощью синтаксиса MXML.Но в AS3 вам нужно использовать класс SpriteVisualElement.

var sp:SpriteVisualElement = new SpriteVisualElement();
this.addElement(sp);
sp.graphics.beginFill(0x00ff00,1);
sp.graphics.drawRoundRect(10,10,100,100,150,150);
sp.graphics.endFill();

Это будет работать.

0 голосов
/ 31 марта 2010

Обратите внимание, что вы также можете сделать это с графикой MXML:

<?xml version="1.0" encoding="utf-8"?>
<!-- fxg/GraphicCompMainMXML.mxml -->
<s:Application backgroundColor="0xFFFFFF"      
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark">
    <s:Graphic>    
         <s:Rect id="rect1" width="200" height="200">
              <s:fill>
                 <s:SolidColor color="0xFFFFCC"/>
              </s:fill>
              <s:stroke>
                 <s:SolidColorStroke color="0x660099" weight="2"/>
              </s:stroke>
         </s:Rect>
    </s:Graphic>
</s:Application>
...