0

わかりました。一連の画像を追加して、それぞれをドラッグアンドドロップできるようにします。すべての画像をImagesクラスに埋め込んでいます。s0、s1、s2は画像クラスのインスタンスです。今これは私がやったことです

public function Main():void 
{
    if (stage) init();
    else addEventListener(Event.ADDED_TO_STAGE, init);

    function init(e:Event = null):void 
    {
        var a:Array = new Array(); 
        var imageContainer:Sprite = new Sprite;
        var imgClass:Images = new Images(); 

       for (var i:int = 0; i < 9; i++) {
            a[i].push(imgClass.(s+String(i)));
            imageContainer.addChild[a[i]]; 
        }
        stage.addChild(imageContainer);
        imageContainer.addEventListener(MouseEvent.MOUSE_UP, takeIt);
        imageContainer.addEventListener(MouseEvent.MOUSE_DOWN, dropIt);

        function takeIt(event:MouseEvent) {
            event.currentTarget.startDrag(); 
        }
        function dropIt(event:MouseEvent) {
            event.currentTarget.stopDrag(); 
        }
    }
} 
4

1 に答える 1

0

コードを少し書き直しましたが、テストできませんでした。

私が最初に気づいたのは、あなたのinitメソッドがあなたのメソッドの中にあったということMainです。次に、あなたtakeItdropItメソッドは の中にありましたinit。それが実際に機能するかどうかはわかりませんが、以下のコードで修正しました。

私のコードでは、Imagesクラス内にある画像インスタンスは のインスタンスであると想定していますBitmap。これは、forループ内でそれぞれを a に追加する必要があったため、 andSpriteにアクセスできることを意味します。各画像のイベントをリッスンし、画像をvar に設定して startDrag を実行します。で もリッスンし、currentImage をドロップします。startDragstopDragMOUSE_DOWNselectedImageMOUSE_UPstage

package 
{
    import flash.display.Bitmap;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;

    public class  Main extends Sprite
    {
        private var selectedImage:Sprite;

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            var imageContainer:Sprite = new Sprite();
            var imgClass:Images = new Images(); 

            for (var i:int = 0; i < 9; i++) 
            {
                var imgInstance:Bitmap = imgClass['s' + i.toString()] as Bitmap;
                var imgSprite:Sprite = new Sprite();
                imgSprite.addChild(imgInstance); // Put image in a sprite so we can use startDrag on it.
                imageContainer.addChild(imgSprite);
                imgInstance.addEventListener(MouseEvent.MOUSE_DOWN, img_mouseDownHandler);
            }

            addChild(imageContainer);

            stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler);
        }

        private function dropSelectedImage():void 
        {
            if (selectedImage) 
            {
                selectedImage.stopDrag(); 
            }
        }

        private function img_mouseDownHandler(e:MouseEvent):void 
        {
            dropSelectedImage();
            selectedImage = e.currentTarget as Sprite;
            selectedImage.startDrag();
        }

        private function stage_mouseUpHandler(e:MouseEvent):void 
        {
            dropSelectedImage();
        }
    }
}

ループで画像を構築するには、配列を手動で構築してから、次のように配列をループすることもできます。

var images:Array = [imgClass.s0, imgClass.s1, imgClass.s2, imgClass.s3, imgClass.s4, imgClass.s5, imgClass.s6, imgClass.s7, imgClass.s8];
for each (var img:Bitmap in images) 
{
    var imgSprite:Sprite = new Sprite();
    imgSprite.addChild(img); // Put image in a sprite so we can use startDrag on it.
    imageContainer.addChild(imgSprite);
    imgInstance.addEventListener(MouseEvent.MOUSE_DOWN, img_mouseDownHandler);
}

この助けを願っています。コメントで詳しく説明したり、他のことを説明したりするには、お気軽にお問い合わせください。

于 2012-12-02T23:05:11.427 に答える