2009-03-04 10 views
0

S'il vous plaît, n'importe qui peut me guider comment faire ce genre de choses. J'ai un panneau et une boîte, le panneau est mon panneau de composant (le panneau de composant à l'intérieur est par exemple image, TextArea, vidéo) et Box est ma boîte de cible pour ma création de composant. L'utilisateur peut sélectionner un composant qu'il souhaite créer (création dynamique) et le faire glisser vers la cible Box (glisser-déposer). Puis, après avoir créé le composant , l'utilisateur peut faire glisser le composant qu'il a créé et placer n'importe où sur la cible Box et également l'utilisateur peut redimensionner le composant qu'il/elle a créé (redimensionnement d'exécution).Flex: comment redimensionner et déplacer un composant en cours d'exécution?

i ont ce code pour le glisser-déposer et il semble que ce code fonctionne uniquement sur l'image

//-----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>; 

Comment déplacer le composant d'image ainsi non comme TxtArea? Comment redimensionner le composant dans la boîte cible? (Ceci est comme interface de flex lorsque le composant création) Merci ..

Répondre

0

Allez à http://sourceforge.net/projects/tcycomponents/
et téléchargez le package et la démo si vous le souhaitez.

Utilisez le composant TcyReziser pour déplacer/redimensionner facilement comme le fait Delphi 2009!

Regards,

Mauricio
+0

Le composant lié est de Delphi, non pas pour Flex. –

Questions connexes