0

これは簡単だと思いますが、素晴らしく機能するドラッグ アンド ドロップ コードを持っています...ただし、ターゲットごとに複数のオブジェクトをドロップできます。私が望むのは、ターゲットごとに 1 つのオブジェクトのみを許可することです。私が調べたところ、オブジェクトが既にドロップされているかどうかをテストする方法が見つからないようです。ここに私が持っているコードがあります:

package com {

import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.geom.Point;
import com.greensock.*;

public class DraggableObject extends MovieClip 
{
    protected var origPos:Point;
    public function DraggableObject() 
    {
        origPos = new Point(x, y);
        buttonMode = true; // changes cursor to hand
        addEventListener(MouseEvent.MOUSE_DOWN, down);

    }


    protected function down (event:MouseEvent): void
    {
        parent.addChild(this); // adds object to the top of the display list to keep the object on top
        startDrag(); // built in Flash method
        stage.addEventListener(MouseEvent.MOUSE_UP, stageUp);
        var upPosX = x + 5;
        var upPosY = y - 5;
        TweenMax.to(this, .2, {dropShadowFilter:{color:0x666666, alpha:1, blurX:12, blurY:12, distance:12}});
        TweenLite.to(this, .2, {x: upPosX, y: upPosY});
        mouseEnabled = false;
    }

    protected function stageUp (event:MouseEvent): void 
    {
        stage.removeEventListener(MouseEvent.MOUSE_UP, stageUp); // good coding
        stopDrag(); // built in Flash method
        TweenMax.to(this, .5, {dropShadowFilter:{color:0x666666, alpha:0, blurX:12, blurY:12, distance:12}});

         if (dropTarget.parent.name == "root1"){
                returnToOrigPos();
        } 
            else if(dropTarget)// dropTarget is a built in property this means if dropTarget != null
        {
            trace("dropt on "+dropTarget.parent.name);
            x = dropTarget.parent.x;
            y = dropTarget.parent.y;

            //buttonMode = false; //only use these to keep the user's selection...can't change if these are active.
            //removeEventListener(MouseEvent.MOUSE_DOWN, down);

        } 
        mouseEnabled = true;
    }

    protected function returnToOrigPos(): void 
    {
            x = origPos.x;
            y = origPos.y;
    }
}

私はそれhitTestObjectdropTargetうまくいくと思っていましたが、それらを使用する方法がわかりません。

助けてくれてありがとう!マイク

4

1 に答える 1