Actionscript 3 在flex mobile中将图像拖动到图像上并动态定位

Actionscript 3 在flex mobile中将图像拖动到图像上并动态定位,actionscript-3,ipad,apache-flex,flex4.6,flex-mobile,Actionscript 3,Ipad,Apache Flex,Flex4.6,Flex Mobile,我正在为移动应用程序使用FlashBuilder4.6。我需要将一个图像拖动到容器中的另一个图像上,并且我必须通过从另一个视图获取值来动态定位可拖动图像。我不熟悉flex中的移动应用程序开发。用一些教程或示例指导我。在这里开始学习。。。可拖动的红色圆圈 MyApp.mxml: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"

我正在为移动应用程序使用FlashBuilder4.6。我需要将一个图像拖动到容器中的另一个图像上,并且我必须通过从另一个视图获取值来动态定位可拖动图像。我不熟悉flex中的移动应用程序开发。用一些教程或示例指导我。

在这里开始学习。。。可拖动的红色圆圈

MyApp.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:comps="*">
    <comps:MyCircle width="100%" height="100%"/>
</s:Application>

MyCircle.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:UIComponent 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Script>
        <![CDATA[
            import flash.filters.*;

            public static const SHADOW:Array = [ new DropShadowFilter(10, 80, 0x000000, 0.5, 32, 32, 1, 1, false, false, false) ];
            private var dX:Number, dY:Number;
            private var circle:Shape = new Shape();

            override protected function createChildren():void {
                super.createChildren();
                circle.graphics.beginFill(0xFF0000);
                circle.graphics.drawCircle(0, 0, 20);
                addChild(circle);
                addEventListener(MouseEvent.MOUSE_DOWN, handleDown);
            }

            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
                super.updateDisplayList(unscaledWidth, unscaledHeight);
                circle.x = unscaledWidth / 2;
                circle.y = unscaledHeight / 2;
            }

            private function handleDown(event:MouseEvent):void {
                dX = circle.x - stage.mouseX;
                dY = circle.y - stage.mouseY;
                circle.scaleX = circle.scaleY = 1.5;
                circle.filters = SHADOW;
                stage.addEventListener(MouseEvent.MOUSE_MOVE, handleDrag);
                stage.addEventListener(MouseEvent.MOUSE_UP, handleUp);
            }

            private function handleDrag(event:MouseEvent):void {
                circle.x = stage.mouseX + dX;
                circle.y = stage.mouseY + dY;
                event.updateAfterEvent();
            }

            private function handleUp(event:MouseEvent):void {
                circle.filters = null;
                circle.scaleX = circle.scaleY = 1;
                stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleDrag);
                stage.removeEventListener(MouseEvent.MOUSE_UP, handleUp);
            }
        ]]>
    </fx:Script>
</mx:UIComponent>

在这里开始。。。可拖动的红色圆圈

MyApp.mxml:

<?xml version="1.0" encoding="utf-8"?>
<s:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:comps="*">
    <comps:MyCircle width="100%" height="100%"/>
</s:Application>

MyCircle.mxml:

<?xml version="1.0" encoding="utf-8"?>
<mx:UIComponent 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Script>
        <![CDATA[
            import flash.filters.*;

            public static const SHADOW:Array = [ new DropShadowFilter(10, 80, 0x000000, 0.5, 32, 32, 1, 1, false, false, false) ];
            private var dX:Number, dY:Number;
            private var circle:Shape = new Shape();

            override protected function createChildren():void {
                super.createChildren();
                circle.graphics.beginFill(0xFF0000);
                circle.graphics.drawCircle(0, 0, 20);
                addChild(circle);
                addEventListener(MouseEvent.MOUSE_DOWN, handleDown);
            }

            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
                super.updateDisplayList(unscaledWidth, unscaledHeight);
                circle.x = unscaledWidth / 2;
                circle.y = unscaledHeight / 2;
            }

            private function handleDown(event:MouseEvent):void {
                dX = circle.x - stage.mouseX;
                dY = circle.y - stage.mouseY;
                circle.scaleX = circle.scaleY = 1.5;
                circle.filters = SHADOW;
                stage.addEventListener(MouseEvent.MOUSE_MOVE, handleDrag);
                stage.addEventListener(MouseEvent.MOUSE_UP, handleUp);
            }

            private function handleDrag(event:MouseEvent):void {
                circle.x = stage.mouseX + dX;
                circle.y = stage.mouseY + dY;
                event.updateAfterEvent();
            }

            private function handleUp(event:MouseEvent):void {
                circle.filters = null;
                circle.scaleX = circle.scaleY = 1;
                stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleDrag);
                stage.removeEventListener(MouseEvent.MOUSE_UP, handleUp);
            }
        ]]>
    </fx:Script>
</mx:UIComponent>