代码之家  ›  专栏  ›  技术社区  ›  Parris

在Flex 4/AS3中绘制形状添加子问题

  •  2
  • Parris  · 技术社区  · 16 年前

    我只是想用flex4在面板内部画一个矩形。我用的是spark而不是mx。它抱怨addchild被addelement替换;但是,addelement需要类型ivisualcomponent。我认为雪碧应该是那种类型的;但是,它在尝试使用以下代码时报告了一个错误。。。我试过几种不同的方法。我想我错过了一些关于Flex4的最基本的东西。任何启发都将不胜感激!:-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 回复  |  直到 16 年前
        1
  •  4
  •   ablerman    16 年前

    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);
    }
    
        2
  •  3
  •   Devesh M    15 年前

    是的,我们也可以使用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();
    

    会有用的。

        3
  •  0
  •   matt horn    16 年前

    请注意,您还可以使用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>