1

AS3 でマーキー選択効果を実現し、動的な四角形を描画して複数のムービークリップを選択し、ドラッグ アンド ドロップする方法を誰か教えてもらえますか?

4

1 に答える 1

2

startDrag()一度に 1 つのオブジェクトしかドラッグできないため、複数のオブジェクトをドラッグ可能にする必要がある場合は使用しないでください。代わりに、マウス イベントをリッスンし、手動で移動します。

var oldX:int;
var oldY:int;
var dragging:Boolean = false;

function onMouseDown(evt:MouseEvent):void {
    dragging = true;
    oldX = evt.stageX;
    oldY = evt.stageY;
}

function onMouseMove(evt:MouseEvent):void {
    if (!dragging) return;
    var dX:int = evt.stageX - oldX;
    var dY:int = evt.stageY - oldY;
    for (int i = 0; i < selectedClips.length; i++) {
        var clip:DisplayObject = selectedClips[i];
        clip.x += dX;
        clip.y += dY;
    }
    oldX = evt.stageX;
    oldY = evt.stageY;
}

function onMouseUp(evt:MouseEvent):void {
    dragging = false;
}

このコードは、次のことを前提としています。

  1. 選択したオブジェクトの配列は と呼ばれselectedClipsます。
  2. 選択したオブジェクトの配列はすべて から継承しDisplayObjectます。
  3. これらの関数を呼び出すMOUSE_DOWNMOUSE_MOVE、およびマウス イベントのすべてのドラッグ可能なオブジェクトにイベント リスナーを追加しました。MOUSE_UP

これら 3 つの条件のいずれかが満たされていない場合は、私のコードまたはあなたのコードを更新して正しく動作するようにしてください。また、オブジェクトがドロップされたときに追加の処理を行う必要がある場合は、マウスアップ ハンドラーを使用してカスタム コードを追加できます。

于 2012-07-20T06:13:04.177 に答える