Apache flex 将图像从一个容器拖放到另一个容器-Flex

Apache flex 将图像从一个容器拖放到另一个容器-Flex,apache-flex,drag-and-drop,bitmap,Apache Flex,Drag And Drop,Bitmap,我需要一种将图像从一个容器拖放到另一个容器的方法。我已经尝试了一些不同的方法,但我想拖放的事情仍然在逃避我。不管怎样,这就是我要做的,一个容器将包含一些位图/矢量图像(对于这个?平铺组?或?)然后我希望能够将任何图像拖到面板内的另一个较大的图像上。就像在Photoshop中拖动形状一样 这里没有代码,因为我完全不知道如何去做。我在这里或那里找到了一些技巧/教程,但没有一个是我能够轻松理解或适应我需要的。有什么帮助吗 编辑1:到目前为止: public function begin

我需要一种将图像从一个容器拖放到另一个容器的方法。我已经尝试了一些不同的方法,但我想拖放的事情仍然在逃避我。不管怎样,这就是我要做的,一个容器将包含一些位图/矢量图像(对于这个?平铺组?或?)然后我希望能够将任何图像拖到面板内的另一个较大的图像上。就像在Photoshop中拖动形状一样

这里没有代码,因为我完全不知道如何去做。我在这里或那里找到了一些技巧/教程,但没有一个是我能够轻松理解或适应我需要的。有什么帮助吗

编辑1:到目前为止:

        public function beginDrag( mouseEvent:MouseEvent ):void
        {
          var dragInitiator:IUIComponent = mouseEvent.currentTarget as IUIComponent;

            var dragSource:DragSource = new DragSource();
            dragSource.addData(mouseEvent.currentTarget.source, "items");

            var dragProxy:Image = new Image();
            dragProxy.source = mouseEvent.currentTarget.source;
            dragProxy.setActualSize(mouseEvent.currentTarget.width,mouseEvent.currentTarget.height)
            DragManager.doDrag(dragInitiator, dragSource, mouseEvent, dragProxy);
        }
        public function acceptDrop( dragEvent:DragEvent ):void
        {
            var dropTarget:IUIComponent = dragEvent.currentTarget as IUIComponent;
            var dragSource:DragSource = dragEvent.dragSource;
            if (dragSource.hasFormat("items"))
            {
                DragManager.acceptDragDrop(Image(dragEvent.currentTarget));
            }
        }
        public function handleDrop( dragEvent:DragEvent ):void
        {
            var dragInitiator:IUIComponent = dragEvent.dragInitiator;
            var dropTarget:IUIComponent = dragEvent.currentTarget as IUIComponent;

            var items:String = dragEvent.dragSource.dataForFormat("items") as String;
            var img:Image = new Image();
            img.x=dragEvent.localX;
            img.y=dragEvent.localY;
            img.width = 50;
            img.height=50;
            img.source=items.toString();
            var bitmap:Bitmap= Bitmap(img.content);
            myImage.addChild(img);

        }

不确定“container”是什么意思,但总的来说,您希望在形状上使用MOUSE\u DOWN/MOUSE\u UP事件监听器,并在监听器函数中调用startDrag()和stopDrag()。

启用拖放的最简单方法是使用列表组件(您可以为其提供自定义布局,例如TileLayout)。请参阅Flex文档中的一些示例代码,这些代码应该可以帮助您入门


如果出于某种原因,列表对您不起作用,您需要直接使用DragManager。本文描述了所有必需的事件,并提供了示例代码。

嗯,不确定container是否是正确的术语。但这是我想要的。我想在一个平铺组中保留一些图像,从中我想将任何图像拖放到面板内的另一个较大的图像上。你认为我可以为你提到的事件提供任何链接吗?我从这里和那里找到的一些代码开始。无论如何,在我的问题中,代码是更新的,现在我面临的问题是,每次拖放图像时,实际上都会创建一个副本并将其拖放到目标上。现在,一旦它进入目标(即,具有较大图像的图像控件),我需要它在图像控件上的不同坐标处仍然可以拖动/拖放,但不复制图像。也就是说,图像应该完全移动到新的位置。我该怎么做?如果在拖动启动器上侦听dragComplete事件,则可以在拖放后处理清理。您可能还需要查看DragManager.showFeedback(DragManager.MOVE)以指定拖动是一个移动而不是一个副本。