我只是想使用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);
}
答案 0 :(得分:4)
Sprite没有实现IVisualComponent。 (查看文档:{{3}})
您需要添加一个UIComponent来保存精灵。 类似的东西:
private function drawRectangle(e:MouseEvent) : void {
var s:Sprite = new Sprite();
var c:UIComponent = new UIComponent();
c.addChild(s);
canvas.addChild(c);
}
答案 1 :(得分: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();
它会起作用。
答案 2 :(得分: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>