我正在制作一个匹配游戏,我左边有一些图像,我可以将它们拖到我右边的图像上,如果它们匹配,它们都应该从舞台上消失。
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中,我将第二个图像的源路径更改为“”,以便它从舞台上消失。如何访问第一个文件(被拖动的文件),以便我可以将其路径更改为“”,以摆脱它?
答案 0 :(得分:1)
我的第一个猜测是你可以从DragEvent的dragInitiator属性中获取启动拖动的图像对象的实例。
但是,如果由于某种原因无效,您可以随时将图像控件添加为dataSource上的数据。