Frage

Bitte, jemand kann mich führen, wie man dieses Zeug tun.

Ich habe ein Pannel und eine Box, die pannel ist meine Komponente Pannel (innen Komponente pannel ist z. B. Bild, TextArea-, Video) und Box ist mein Ziel Box für meine Komponente Schöpfung. Der Benutzer kann eine Komponente auswählen er / sie (dynamische Erstellung) erstellen möchten und ziehen Sie es Box (Drag & Drop-Ereignis) zum Ziel. Dann, nachdem die Komponente der Schaffung der Benutzer kann die Komponente ziehen, die er / sie überall erstellt und auf Ziel Box und auch der Benutzer kann die Größe der Komponente, die er / sie erstellt (runtime Resize).

Ich habe diesen Code für Drag & Drop und es scheint, dieser Code nur auf das Bild funktioniert

//-----action script-----//
        private function dragIt(event:MouseEvent, value: String, objParent: String, objName: String):void 
        {           
            var dragInitiator:Image = event.currentTarget as Image;    
            var dragSource:DragSource = new DragSource();

            dragSource.addData(value,'value');
            dragSource.addData(objParent, 'parent');
            dragSource.addData(objName, 'objname'); 

            var dragProxy:Image = new Image();
            dragProxy.source = event.currentTarget.source;


            DragManager.doDrag(dragInitiator, dragSource, event, dragProxy);
        }


        private function dragEnterHandler(event:DragEvent):void 
        {
            var dropTarget:Box=event.currentTarget as Box;
            dropTarget.setStyle("borderThickness", 5);
            DragManager.acceptDragDrop(dropTarget);
        }

        private function dragExitHandler(event:DragEvent):void
        {
            var dropTarget:Box=event.currentTarget as Box;                
            revertBoxBorder();                
        }     

        private function revertBoxBorder():void
        {
            targetBox.setStyle("borderThickness", 1);                
        }

        private function dragDropHandler(event:DragEvent):void 
        {
            var value:String = event.dragSource.dataForFormat('value') as String;
            var objParent:String = event.dragSource.dataForFormat('parent') as String;
            if(value == "mp3")
            {
             //do something     
            }
            else if (value == "image")
            {
                if (objParent == "panel")
                {
                    var imgView: Image = new Image;                 
                    imgView.x = event.stageX;
                    imgView.y = event.stageY;

                    addChild(imgView);
                    imgView.name = String(getChildByName(imgView.name).parent.numChildren-1);     
                    imgView.addEventListener(MouseEvent.MOUSE_MOVE,  function(e:MouseEvent):void 
                    {
                    dragIt(e, value, 'box', Image(e.target).name);
                });
                    imgView.source = ImgInsert;
                }
                else
                {
                    var objName:String = event.dragSource.dataForFormat('objname') as String;
                    getChildByName(objName).parent.getChildAt(int(objName)).x = event.stageX;
                    getChildByName(objName).parent.getChildAt(int(objName)).y = event.stageY;
                }

            }
            else if (value == "textarea")
            {
                //do something                  
            }

        }

//-----mxml code------//
<mx:Panel x="0" y="37" width="91" height="417" layout="absolute" title="Component" borderColor="#8DA5AB" color="#345860" borderStyle="outset">
    <mx:Image x="7" y="43" width="21" height="18" source="{TxtAreaInsert}" mouseMove="dragIt(event,'textarea','panel','')"/>
    <mx:Image x="36" y="43" width="21" height="18" source="{ImgInsert}" mouseMove="dragIt(event,'image','panel','')"/>
    <mx:Image x="36" y="80" width="21" height="18" source="{Mp3Insert}" mouseMove="dragIt(event,'mp3','panel','')"/>
    <mx:Image x="7" y="80" width="21" height="18" source="{VdoInsert}" mouseMove="dragIt(event,'video','panel','')"/>
</mx:Panel>
<mx:Box id="targetBox" y="37" width="589" height="417" borderColor="#8CC2E8" backgroundColor="#D5DBEE"
    dragExit="dragExitHandler(event)" dragEnter="dragEnterHandler(event)" dragDrop="dragDropHandler(event)" left="99">
</mx:Box>;

Wie also nicht Bildkomponente wie TxtArea bewegen? Wie die Komponente innerhalb Zielfeld, um die Größe? (Dies ist wie GUI von Flex beim Erstellen Komponente) Danke ..

War es hilfreich?

Lösung

Besuche Rogue-Development.com Object Handles ich verwendet habe, diese mit recht guter Erfolg für Komponenten / Ändern der Größe bewegen.

Andere Tipps

Auch die Pantaste Bibliothek die viel anspruchsvoller ist als Object Handles.

http://sourceforge.net/projects/tcycomponents/
und Download-Paket und Demo, wenn Sie wollen.

Verwenden TcyReziser Komponente für die einfache Bewegen / Größe ändern wie Delphi 2009 tut!

Viele Grüße, Mauricio

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top