Перетаскивание более одного элемента в ActionScript Adobe Flash CS3 - PullRequest
0 голосов
/ 25 апреля 2011

Я пытался запрограммировать игру в своем классе на Digital Media и столкнулся с огромным препятствием на пути перетаскиваемых предметов. Сначала мне удалось создать один элемент, который можно перетаскивать мышью с помощью этого кода (фрагмент ролика называется «мед»):

//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;
    }
}

Однако создание более одного подвижного фрагмента фильма пока невозможно. Многократное использование одного и того же кода создает ошибку из-за конфликтующих частей кода. Когда я спросил одного из лучших учеников по программированию, он сказал мне создать массив, что я и сделал;

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

Но теперь я не знаю, как сделать код, который ссылается на фрагмент ролика, ссылается на их массив. Помощь будет очень признательна, так как эти проблемы доставляют мне серьезные неприятности.

1 Ответ

1 голос
/ 25 апреля 2011
honeyBall = ["honey, honey1, honey2"];

Это массив, содержащий одну строку. Вы должны получить ваши экземпляры клипов в массив, что-то вроде этого:

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;
        }
    }
}

(перетаскивает все в массиве, будь то один или несколько клипов.)

...