Flex检测拖动数据

时间:2011-08-05 20:09:53

标签: flex list actionscript drag-and-drop components

我有一个接受drop的列表。当一个项目被删除时(DragEvent.DRAG_DROP)我需要收集被删除的数据,但是我没有在事件中找到任何可以帮助我这样做的事情,event.dragInitiator.selectedItems会起作用但是会给我一个错误。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

数据应位于event.dragSource。您必须使用hasFormat()检查正确的格式,并使用dataForFormat()检索它。以下是DragSource的文档。

代码将是这样的(假设这是Flex 4):

// In dragDrop handler or dragComplete
if (event.dragSource.hasFormat("itemsByIndex"))
{
    var items:Vector.<Object> = event.dragSource.dataForFormat("itemsByIndex") as Vector.<Object>;
    // Do stuff with items
}

答案 1 :(得分:0)

您还可以收听更改的dataProvider。

list.dataProvider.addEventListener(CollectionEvent.COLLECTION_CHANGE, list_dataProvider_change);

...

protected function list_dataProvider_change(e :CollectionEvent) :void
{
    if (e.kind == CollectionEventKind.REMOVE)
        trace('list element removed from - index', e.location);
    else if (e.kind == CollectionEventKind.ADD)
        trace('list element added to - index', e.location);   
}