Я создаю игру, в которой у меня есть несколько изображений слева, и я могу перетащить их на изображения справа, и если они совпадают, они оба должны исчезнуть со сцены.
Код 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 я меняю исходный путь моего второго изображения на «», чтобы он исчез со сцены.Как я могу получить доступ к первому файлу (тому, который перетаскивали), чтобы я мог изменить его путь на "", чтобы избавиться от него?