2

我只是想使用 flex4 在面板内绘制一个矩形。我正在使用 spark 而不是 mx。它抱怨 addchild 被 addelement 取代;但是,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);
}
4

3 回答 3

4

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);
}
于 2010-03-31T02:02:06.250 回答
3

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

它会起作用的。

于 2011-04-05T09:43:05.687 回答
0

请注意,您也可以使用 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>
于 2010-03-31T13:56:38.570 回答