拖放 - 仅限COPY与移动

时间:2011-03-06 13:45:54

标签: flex drag-and-drop

我希望在flex中实现拖放功能。我已经能够使用拖动管理器

来做到这一点

Drag and drop examples

只有我的需求略有不同 - 我想要放置拖动对象的副本,而不是原始对象。关于如何实现这一目标的任何指导。

另外,我想为这个被删除的对象动态创建一个id来进行控制。感谢

2 个答案:

答案 0 :(得分:3)

dragDropHandler调用event.preventDefault()中 - 这将禁用默认删除逻辑,包括从源集合中删除对象并将其添加到目标集合。然后添加你的逻辑。

答案 1 :(得分:0)

您可以将所有拖动处理程序覆盖为:

    override protected function dragEnterHandler(event:DragEvent):void{
        if(event.action == DragManager.MOVE)
            event.action=DragManager.COPY;
        super.dragEnterHandler(event);
    }

    override protected function dragCompleteHandler(event:DragEvent):void{
        if(event.action == DragManager.MOVE)
            event.action=DragManager.COPY;
        super.dragCompleteHandler(event);
    }

    override protected function dragDropHandler(event:DragEvent):void{
        if(event.action == DragManager.MOVE)
            event.action=DragManager.COPY;
        super.dragDropHandler(event);
    }

    override protected function dragExitHandler(event:DragEvent):void{
        if(event.action == DragManager.MOVE)
            event.action=DragManager.COPY;
        super.dragExitHandler(event);
    }

    override protected function dragOverHandler(event:DragEvent):void{
        if(event.action == DragManager.MOVE)
            event.action=DragManager.COPY;
        super.dragOverHandler(event);
    }

    override protected function dragStartHandler(event:DragEvent):void{
        if(event.action == DragManager.MOVE)
            event.action=DragManager.COPY;
        super.dragStartHandler(event);
    }