java - 我如何移动原始源图像而不是 imageProxy?

标签 java apache-flex flash actionscript-3

    <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/

相关文章:

java - 如何为Android文本转语音制作暂停按钮?

ios - 在iOS上获取软键盘以显示在Pure AS3移动项目中(flex 4.5)

apache-flex - 如何在Flex中克隆对象?

javascript - 是否有可能在网络音频 api 中获取从 Flash 生成的声音?

flash - 更改 Flex 下载进度栏组件的栏颜色的简单方法?

java - 从套件内的 testNG 运行一个测试

java - 如何从java小程序获取本地机器ip

java - 在运行时更改可访问性

apache-flex - 在 Flex 4 中使背景图像居中

java - ExceptionTranslator 的异常不会返回到 flex