<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 ?
对此有什么想法吗?
最佳答案
在我看来,您只是想在 Canvas 内移动图像,对吗?如果是这样,在我看来,使用 DragManager 和相关机制就太过分了。您可以简单地向图像中添加鼠标向下/向上的处理程序,然后添加一个成员变量“isMouseButtonDown”或一些这样的成员变量,当鼠标按钮向下时将其设置为 true ,当鼠标按钮向上时将其设置为 false 。当鼠标下降时,向图像添加一个用于鼠标移动的处理程序(不要忘记在鼠标上升时删除该处理程序。)然后,每当收到移动事件并且 isMouseButtonDown 时,就更新图像的 x/y真的。专业提示:添加鼠标移动处理程序时,将 addEventListener 的第三个参数设置为 true (useCapture),这将使您的图像移动时不那么抖动。希望有帮助。
关于java - 我如何移动原始源图像而不是 imageProxy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4212373/