Диспетчер перетаскивания - как получить доступ к цели перетаскивания события в моем dragDropHandler? - PullRequest
1 голос
/ 29 марта 2011

Я создаю игру, в которой у меня есть несколько изображений слева, и я могу перетащить их на изображения справа, и если они совпадают, они оба должны исчезнуть со сцены.

Код 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 Ответ

1 голос
/ 29 марта 2011

Моим первым предположением будет то, что вы можете получить экземпляр объекта изображения, который инициировал перетаскивание, из свойства dragInitiator объекта DragEvent.

Однако, если это по какой-либо причине не работает, вы всегда можете добавить свой элемент управления изображением в качестве данных на источник данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...