رسم أشكال في مشكلات Flex 4/AS3 Addchild
-
23-09-2019 - |
سؤال
أحاول ببساطة رسم مستطيل داخل لوحة باستخدام Flex4. أنا أستخدم Spark بدلاً من MX. ويشتكي من استبدال Addchild بالإضافات ؛ ومع ذلك ، يتوقع AddElement النوع IVISAULOCEMPONENT. أعتقد أن العفريت يجب أن يكون من هذا النوع ؛ ومع ذلك ، فإنه يبلغ عن خطأ عند محاولة استخدام الرمز أدناه ... لقد جربت بعض الطرق المختلفة. أعتقد أنني أفتقد شيئًا أساسيًا جدًا حول Flex 4. أي تنوير سيكون موضع تقدير كبير! :-د
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);
}
المحلول
Sprite لا تنفذ IviSualComponent. (تحقق من المستندات: http://www.eonflex.com/flex/4.1/langref/flash/display/sprite.html)
تحتاج إلى إضافة مكون uicompont لعقد العفريت. شيء مثل:
private function drawRectangle(e:MouseEvent) : void {
var s:Sprite = new Sprite();
var c:UIComponent = new UIComponent();
c.addChild(s);
canvas.addChild(c);
}
نصائح أخرى
نعم يمكننا أن نجعلها باستخدام بناء جملة 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();
سوف تعمل.
لاحظ أنه يمكنك أيضًا القيام بذلك باستخدام رسومات 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>