在手动拖动和列表中将ItemRenderer列为Draginitiator下降

时间:2012-06-13 11:49:07

标签: actionscript-3 flex drag-and-drop flex4

我正在尝试在实现手动拖动时将Spark列表ItemRenderer添加为DragInitiator。丢弃功能。下面的示例将整个列表作为dragInitiator。问题是如何在这种情况下使用Itemrenderer?

protected function myList_dragStartHandler(event:DragEvent):void
{
    var dragInitiator:List = event.currentTarget as List;
    var selectedQuery:Object = List(event.dragInitiator).selectedItem;
    var ds:DragSource = new DragSource();
    ds.addData(selectedQuery, "query");
    DragManager.doDrag(dragInitiator, ds, event);
}

<s:List id="myList" y="10" height="273" dataProvider="{sqList}" labelField="desc" itemRenderer="SqItemRenderer"
    dragEnabled="true" dragStart="myList_dragStartHandler(event)"/>

1 个答案:

答案 0 :(得分:0)

解决了我的itemrenderer设置mouseMove处理程序的问题。

override public function set data(value:Object):void
{
     if (value != null)
     {
        super.data = value; 
     }
}

protected function itemrenderer1_mouseMoveHandler(event:MouseEvent):void
{
    var dragInitiator:IUIComponent = event.currentTarget as IUIComponent;
    var ds:DragSource = new DragSource();
    ds.addData(this.data, "foo");
    DragManager.doDrag(dragInitiator, ds, event);
}