我需要一种方法将图像从容器拖放到另一个容器。我尝试了几种不同的方法,但我想是拖拽和放大器。掉落的东西还在逃避我。无论如何,这就是我要做的事情,一个容器将包含一些位图/矢量图像(这是最好的方法吗?Tile Group?或者?)然后我希望能够将任何图像拖到另一个更大的位置面板内的图像。就像在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);
}
答案 0 :(得分:0)
不确定“容器”是什么意思,但总体上你想在形状上使用MOUSE_DOWN / MOUSE_UP事件监听器,并在监听器函数中调用startDrag()和stopDrag()。
答案 1 :(得分:0)
启用拖放的最简单方法是使用List组件(您可以为其提供自定义布局,例如TileLayout)。有关可以帮助您入门的示例代码,请参阅Flex文档中的Using drag-and-drop with list-based controls。
如果由于某种原因,List不适合你,你将需要直接使用DragManager。文章Manually adding drag-and-drop support描述了所有必需的事件,并提供了示例代码。