0

私はデジタル メディアのクラスでゲームをプログラミングしようとしてきましたが、ドラッグ可能なアイテムに関して大きな障害にぶつかりました。最初に、このコードを使用してマウスでドラッグできるアイテムを 1 つ作成しました (ムービー クリップは「honey」と呼ばれます)。

//set listeners
honey.addEventListener(MouseEvent.MOUSE_DOWN, startHoneyDrag);
stage.addEventListener(MouseEvent.MOUSE_UP, stopHoneyDrag);
honey.addEventListener(Event.ENTER_FRAME, dragHoney);

//offset between sprite location and click
var clickOffset:Point = null;

//user clicked
function startHoneyDrag(event:MouseEvent) {
        clickOffset = new Point(event.localX, event.localY-7);
}

//user released
function stopHoneyDrag(event:MouseEvent) {
    clickOffset = null
}
//run every frame
function dragHoney(event:Event) {
    if (clickOffset != null) { // must be dragging
    honey.x = mouseX - clickOffset.x;
    honey.y = mouseY - clickOffset.y;
    }
}

ただし、これまでのところ、複数の可動ムービー クリップを作成することは不可能であることが証明されています。同じコードを複数回使用すると、コードの競合部分が原因でエラーが発生します。プログラミングが得意な学生の 1 人に尋ねたところ、配列を作成するように言われました。

var honeyBall:Array = new Array();
honeyBall = ["honey, honey1, honey2"];

しかし今では、ムービー クリップを参照するコードがそれらの配列を参照するようにする方法がわかりません。これらの問題は私に深刻な問題を引き起こしているため、助けていただければ幸いです。

4

1 に答える 1

1
honeyBall = ["honey, honey1, honey2"];

これは、1 つの文字列を含む配列です。次のように、クリップのインスタンスを配列に取得する必要があります。

honeyBall = [honey1, honey2, honey3];

次に、それをドラッグします

function dragHoney(event:Event) {
    if (clickOffset != null) {
        for each (var honey:DisplayObject in honeyBall) {
            honey.x = mouseX - clickOffset.x;
            honey.y = mouseY - clickOffset.y;
        }
    }
}

(1 つでも複数のクリップでも、配列内のすべてをドラッグします。)

于 2011-04-25T05:44:27.407 に答える