0

ドラッグアンドドロップとhitTest機能を備えた6つのオブジェクトがあります。1 つのオブジェクトを hitTest 領域にドラッグすると、それが正しいことは明らかです。

しかし、私の質問は、これらの 6 つのオブジェクトをマウスとキーボードのキーで制御したいということです。それらをドラッグしたくない場合は、キー矢印で移動できます。

2番目の質問は、キーでオブジェクトを移動したい場合にこれら2つのメソッドが実行されるときに、「hitTested」ではない最初のフリーオブジェクトを取得することです

AS3 でこれらのことを行うことはできますか? これらのプロジェクトではかなり奇妙な解決策ですが、可能かどうかを知る必要があります。

ドラッグアンドドロップ機能のコードは次のとおりです

package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.display.MovieClip;

public class Main extends MovieClip
{
    var xPos:int;
    var yPos:int;
    var errors:int;
    var wins:int;

    public function Main():void
    {
        addListeners(objectone,objecttwo,objectthree,objectfour,objectfive);
        errors = 1;
        wins = 1;
    }

    private function getPosition(target:Object):void
    {
        xPos = target.x;
        yPos = target.y;
    }

    private function dragObject(e:MouseEvent):void
    {
        info.text = "";
        getPosition(e.target);

        e.target.startDrag(true);
    }

    private function stopDragObject(e:MouseEvent):void
    {
        if (e.target.hitTestObject(getChildByName(e.target.name + "Target")))
        {
            e.target.x = getChildByName(e.target.name + "Target").x;
            e.target.y = getChildByName(e.target.name + "Target").y;
            info.text = "Bingo!";
            wins++;
        }
        else
        {
            e.target.x = xPos;
            e.target.y = yPos;
            bledy.text = "Wrong: " + errors++;

        }
        if(errors == 4) {
            errors = 1;
            gotoAndPlay(2);
        }

        if(wins == 9) {
            wins = 1;
            gotoAndStop(3);
        }
        e.target.stopDrag();
    }

    private function addListeners(... objects):void
    {
        for (var i:int = 0; i < objects.length; i++)
        {
            objects[i].addEventListener(MouseEvent.MOUSE_DOWN, dragObject);
            objects[i].addEventListener(MouseEvent.MOUSE_UP, stopDragObject);
        }
    }
}
}

コードのヒントを教えてください!乾杯!

4

1 に答える 1

0

確かにそれは可能です...そして確かにそれを達成するためのいくつかのオプションがあります.

キーボード操作については、FocusManager クラスをチェックして、タブを使用して選択したオブジェクトを循環し、フォーカスされたオブジェクトを取得する方法を学習できるようにすることをお勧めします。次に、ステージ キーボード イベントをリッスンして、オブジェクトを矢印で移動します。

ドラッグして移動する場合は、Flex を使用している場合は DragManager クラス関連のサンプルを確認するか、Google でフラッシュのチュートリアルを検索してください。

于 2012-07-25T08:47:39.373 に答える