<mx:Script>
<![CDATA[
//Import classes so you don't have to use full names.
import mx.managers.DragManager;
import mx.core.DragSource;
import mx.events.DragEvent;
import flash.events.MouseEvent;
// Embed icon image.
[Embed(source='assets/globe.jpg')]
public var globeImage:Class;
// The mouseMove event handler for the Image control
// initiates the drag-and-drop operation.
private function mouseOverHandler(event:MouseEvent):void
{
var dragInitiator:Image=Image(event.currentTarget);
var ds:DragSource = new DragSource();
ds.addData(dragInitiator, "img");
// The drag manager uses the Image control
// as the drag proxy and sets the alpha to 1.0 (opaque),
// so it appears to be dragged across the Canvas.
var imageProxy:Image = new Image();
imageProxy.source = globeImage;
imageProxy.height=15;
imageProxy.width=15;
DragManager.doDrag(dragInitiator, ds, event,
imageProxy, -15, -15, 1.00);
}
// The dragEnter event handler for the Canvas container
// enables dropping.
private function dragEnterHandler(event:DragEvent):void {
if (event.dragSource.hasFormat("img"))
{
DragManager.acceptDragDrop(Canvas(event.currentTarget));
}
}
// The dragDrop event handler for the Canvas container
// sets the Image control's position by
// "dropping" it in its new location.
private function dragDropHandler(event:DragEvent):void {
Image(event.dragInitiator).x =
Canvas(event.currentTarget).mouseX;
Image(event.dragInitiator).y =
Canvas(event.currentTarget).mouseY;
}
]]>
</mx:Script>
<!-- The Canvas is the drag target -->
<mx:Canvas id="v1"
width="500" height="500"
borderStyle="solid"
backgroundColor="#DDDDDD"
dragEnter="dragEnterHandler(event);"
dragDrop="dragDropHandler(event);">
<!-- The image is the drag initiator. -->
<mx:Image id="myimg"
source="@Embed(source='assets/globe.jpg')"
mouseMove="mouseOverHandler(event);"/>
</mx:Canvas>
</mx:Application>
在此示例中,imageProxy(重复图像)拖动和移动。但我想移动原始源图像dragInitiator而不是imageProxy。我能怎么做 ?我试过像
DragManager.doDrag(dragInitiator, ds, event,
dragInitiator, -15, -15, 1.00); it's moving but deleted ?
有什么想法吗?
答案 0 :(得分:0)
在我看来,你只是想在画布中移动图像,对吗?如果是这样,在我看来,使用DragManager和相关机制是过度的。您可以简单地向图像添加处理程序以便向下/向上鼠标,然后添加成员var“isMouseButtonDown”或其他一些当鼠标按钮按下时将设置为true并在鼠标按钮启动时将其设置为false。当鼠标停止运行时,为图像添加一个处理程序以便鼠标移动(当鼠标上移时,不要忘记删除处理程序。)然后,每当获得move事件并且isMouseButtonDown为is时,就会更新图像的x / y真正。专业提示:添加鼠标移动处理程序时,将addEventListener的第三个参数设置为true(useCapture),这将使您的图像移动更少抖动。希望有所帮助。