2011-03-29 29 views
1

我正在做一個匹配遊戲,在我的左邊有一些圖像,我可以將它們拖到我右邊的圖像上,如果它們匹配,它們都應該從舞臺上消失。拖動管理器 - 如何訪問dragDropHandler中拖動事件的目標?

MXML代碼:

<mx:VBox> 
<mx:Repeater id="rp" dataProvider="{urlAC}"> 
<mx:Image width="150" height="150" source="{rp.currentItem}"         
mouseMove="initiateDrag(event,event.currentTarget.getRepeaterItem())"/> 
</mx:Repeater> 
</mx:VBox> 
<mx:VBox> 
<mx:Repeater id="rp1" dataProvider="{matchAC}"> 
<mx:Image width="150" height="150" source="{rp1.currentItem}"        
dragEnter="dragEnterHandler(event, event.currentTarget.getRepeaterItem())"        
dragDrop="dragDropHandler(event)"/> 
</mx:Repeater> 
</mx:VBox> 

事件處理程序:

 private function initiateDrag(event:MouseEvent,path:String):void 
     { 
      findMatch(path); 

      var dragInitiator:Image = Image(event.currentTarget); 
      var datasource:DragSource = new DragSource(); 
      datasource.addData(matchTarget, "match"); 

      DragManager.doDrag(dragInitiator, datasource, event); 
     } 

     private function dragEnterHandler(event:DragEvent, pathMatch:String):void 
     { 
      var dropTarget:Image =event.currentTarget as Image; 

      if (event.dragSource.hasFormat("match") && event.dragSource.dataForFormat("match")==pathMatch) 
      { 
       DragManager.acceptDragDrop(dropTarget); 
      } 
     } 

     private function dragDropHandler(event:DragEvent):void 
     { 
      event.currentTarget.source=""; 
     } 

findMatch()是在我的XML認定文件,該文件正在拖動文件相匹配的文件的路徑的功能。獲得該路徑後,我將它發送到dragEnterHandler,並將其與dropTarget文件的路徑進行比較,如果它們相同,則接受它。然後在dragDropHandler中,我將第二張圖片的源路徑更改爲「」,以便它從舞臺上消失。如何訪問第一個文件(被拖動的文件),以便我可以將其路徑更改爲「」,以便將其刪除?

回答

1

我的第一個猜測是你可以從dragEvent的dragInitiator屬性獲得啓動拖動的圖像對象的實例。

但是,如果出於任何原因無法正常工作,您可以隨時將圖像控件添加爲dataSource中的數據。