Dynamisches hinzufügen von untergeordneten Komponenten auf Leinwand vs Gruppe in flex

Habe ich eine benutzerdefinierte Komponente, wo ich einige Grafiken (. e.g zeichnen Sie eine Linie) und Sie dynamisch hinzufügen eine Unterkomponente (e.g-label) zu.

Wenn ich die Komponente aus Gruppe (das wird empfohlen, da pro docs seit der spark-Komponente) wenn ich dann dynamisch die Beschriftung der Grafik-Teil verschwindet.

Aber wenn ich Basis es off-Canvas-Bereich, ist dies nicht möglich.

Warum ist das der Fall?

Hier ist der code.

MyComponent.als

public class MyComponent extends Group
    {
        public var x1:int;
        public var y1:int;

        public function MyComponent()
        {
            super();

            addEventListener(MouseEvent.MOUSE_DOWN, function(event:MouseEvent):void {
                x1 = mouseX;
                y1 = mouseY;
            });

            addEventListener(MouseEvent.MOUSE_MOVE, function(event:MouseEvent):void {
                if (event.buttonDown) {
                    graphics.lineStyle(3, 0x000000);
                    graphics.moveTo(x1, y1)
                    graphics.lineTo(mouseX, mouseY);
                    x1 = mouseX;
                    y1 = mouseY;
                }
            });
        }

        public function addLabel():void
        {
            var label:Label = new Label();
            label.x = 100;
            label.y = 100;
            label.text = "new label ";
            addElement(label);  //change to addChild if using Canvas 
        }
    }

Main.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               xmlns:local="*">

    <s:Panel width="50%" height="50%" verticalCenter="0" horizontalCenter="0" title="Sample app">

        <MyComponent id="drawingArea" xmlns="*" width="100%" height="100%" />

        <s:controlBarContent>
            <s:Button label="Add label" click="drawingArea.addLabel()"/>
        </s:controlBarContent>
    </s:Panel>
</s:Application>
  • Wir müssen sehen, den code, um Ihnen zu helfen.
  • einfach den code Hinzugefügt. Dank
InformationsquelleAutor | 2011-08-04
Schreibe einen Kommentar