2011-05-23 55 views
0

我需要一種將圖像從容器拖放到另一個的方法。我已經嘗試了幾種不同的方式,但我猜拖放&東西仍然躲過我。無論如何,這是我想要做的,一個容器將包含一些位圖/矢量圖像(這是什麼最好的方式?瓷磚組?或?),然後我想能夠拖動任何圖像到另一個更大面板內的圖像。就像在Photoshop中拖動形狀一樣。將圖像從容器拖放到另一個 - Flex

沒有代碼在這裏,因爲我完全失去了如何去做。我在這裏和那裏發現了一些提示/教程,但沒有哪一個能夠輕鬆理解或適應我的需求。那麼,有什麼幫助?

編輯1:這麼遠至今:

 public function beginDrag(mouseEvent:MouseEvent):void 
     { 
      var dragInitiator:IUIComponent = mouseEvent.currentTarget as IUIComponent; 

      var dragSource:DragSource = new DragSource(); 
      dragSource.addData(mouseEvent.currentTarget.source, "items"); 

      var dragProxy:Image = new Image(); 
      dragProxy.source = mouseEvent.currentTarget.source; 
      dragProxy.setActualSize(mouseEvent.currentTarget.width,mouseEvent.currentTarget.height) 
      DragManager.doDrag(dragInitiator, dragSource, mouseEvent, dragProxy); 
     } 
     public function acceptDrop(dragEvent:DragEvent):void 
     { 
      var dropTarget:IUIComponent = dragEvent.currentTarget as IUIComponent; 
      var dragSource:DragSource = dragEvent.dragSource; 
      if (dragSource.hasFormat("items")) 
      { 
       DragManager.acceptDragDrop(Image(dragEvent.currentTarget)); 
      } 
     } 
     public function handleDrop(dragEvent:DragEvent):void 
     { 
      var dragInitiator:IUIComponent = dragEvent.dragInitiator; 
      var dropTarget:IUIComponent = dragEvent.currentTarget as IUIComponent; 

      var items:String = dragEvent.dragSource.dataForFormat("items") as String; 
      var img:Image = new Image(); 
      img.x=dragEvent.localX; 
      img.y=dragEvent.localY; 
      img.width = 50; 
      img.height=50; 
      img.source=items.toString(); 
      var bitmap:Bitmap= Bitmap(img.content); 
      myImage.addChild(img); 

     } 

回答

0

不知道你的「容器」的意思,但總要對形狀使用MOUSE_DOWN/MOUSE_UP事件偵聽器,用的startDrag()和stopDrag ()調用監聽器函數。

+0

好吧,不知道容器是否是合適的術語。但這是我想要的。我想在一個說法中保留一些圖像,拼貼組,然後我想將任何圖像拖放到Panel內的另一個較大的圖像上。你有什麼聯繫,我可以通過你提到的事件? – redGREENblue 2011-05-23 19:42:02

0

啓用拖放操作的最簡單方法是使用List組件(您可以給它一個自定義佈局,比如TileLayout)。請參閱Flex文檔中的Using drag-and-drop with list-based controls以獲得一些可幫助您入門的示例代碼。

如果由於某種原因,List不適合您,您需要直接使用DragManager。文章Manually adding drag-and-drop support描述了所有必需的事件並提供了示例代碼。

+0

我在這裏和那裏找到了一些代碼。無論如何,我的問題更新了代碼,現在我面臨的問題是,每次圖像被拖放時,實際上都會創建一個副本並放在目標上。現在,一旦它進入目標(即,使用較大圖像進行圖像控制),我需要它在Image控件的不同座標上仍可拖動/可拖放,但不需要複製圖像。這就是圖像應該完全轉移到新的位置。我怎麼做? – redGREENblue 2011-05-24 20:28:51

+0

如果您在您的拖動啓動器上偵聽dragComplete事件,則可以在拖放後處理清理。您可能還想查看DragManager.showFeedback(DragManager.MOVE)以指定拖動是移動而不是副本。 – joshtynjala 2011-05-25 18:50:00

相關問題