2

フレーム内に3つの別々のムービークリップがあります。関連性がある場合は、以下に示す簡単なタッチアンドドラッグイベントを使用して、各クリップをステージ内で移動できます。3つのクリップのそれぞれを4番目のクリップにドラッグし、3つすべてが4番目のクリップに含まれているときに、現在のフレームを変更するイベントをトリガーします。AS3でこれを行う最も簡単な方法は何ですか?私は完全な初心者なので、どんな例でも素晴らしいでしょう。ありがとう

    Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

    Gem1_MC.addEventListener(TouchEvent.TOUCH_BEGIN, fl_TouchBeginHandler_2);
    Gem1_MC.addEventListener(TouchEvent.TOUCH_END, fl_TouchEndHandler_2);

    var fl_DragBounds_2:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);

    function fl_TouchBeginHandler_2(event:TouchEvent):void

{



 event.target.startTouchDrag(event.touchPointID, false, fl_DragBounds_2);
    }

    function fl_TouchEndHandler_2(event:TouchEvent):void
    {
        event.target.stopTouchDrag(event.touchPointID);
    }
4

1 に答える 1

2

将来的には、ドラッグアンドドロップ機能がクラスに抽象化されるソリューションを実装したいと思うでしょうが、あなたが持っているもので動作するために、ここに基本的なソリューションがあります:

MovieClips3つが4番目のクリップに「含まれている」と見なされるタイミングを追跡します

var contained:Array = new Array(false, false, false);

オブジェクトがドラッグを終了した場合は、オブジェクトがに含まれているかどうかを確認してくださいmc1。これらのチェックの最後に、それらがすべて正しいかどうかを確認します。

function fl_TouchEndHandler_2(event:TouchEvent):void {
    // Drag & drop stuff...
    contained[2] = Gem2_MC.hitTestObject(Gem4_MC)); // where Gem4_MC is your 4th movie clip.

    if (contained.indexOf(false) == -1) { // This returns -1 if it can't find false
        gotoAndStop(frame_number_you_want);
    }
}

補足として、hitTestObject()単純な「バウンディングボックス」を使用して「衝突」を検出します。これは、2つのムービークリップが実際に触れているように見えなくても、ヒットがtrueとして登録される可能性があることを意味します。Flashでのピクセルの完全な衝突検出は可能ですが、より複雑で、独自の投稿の価値があります。 AS3でのピクセルの完全な衝突の簡単な例は、ここにあります

于 2012-12-20T03:52:21.617 に答える