سؤال

أحاول ببساطة رسم مستطيل داخل لوحة باستخدام 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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top