Actionscript 3.0 перетаскивая один мувиклип за раз - PullRequest
3 голосов
/ 13 марта 2012

Я создавал файл Flash, в который можно перетаскивать и перемещать более одного мувиклипа по сцене. Я настроил функции для контроля, когда он перетаскивается, но когда я нажимаю на один мувиклип, другой моментально присоединяется к другому. Как мне обойти это?

Вот код:

import flash.geom.Point;

//Add variables and items, such as milk and eggs to stage:
var milkClickOffset:Point = null;
var eggClickOffset:Point = null;

var milk:Milk = new Milk();
milk.x = 250;
milk.y = 250;
addChild(milk);

var egg:Egg = new Egg();
egg.x = 330;
egg.y = 330;
addChild(egg);

//Milk Event listeners:;
addEventListener(MouseEvent.MOUSE_DOWN, startMilkDrag);
addEventListener(MouseEvent.MOUSE_UP, stopMilkDrag);
addEventListener(Event.ENTER_FRAME, dragMilk);

//Egg Event listeners:
addEventListener(MouseEvent.MOUSE_DOWN, startEggDrag);
addEventListener(MouseEvent.MOUSE_UP, stopEggDrag);
addEventListener(Event.ENTER_FRAME, dragEgg);

//Milk Functions:;
function startMilkDrag(event:MouseEvent):void
{
    milkClickOffset = new Point(event.localX,event.localY);
}
function stopMilkDrag(event:MouseEvent):void
{
    milkClickOffset = null;
}
function dragMilk(event:Event):void
{
    if (milkClickOffset != null)
    {// must be dragging
        milk.x = mouseX - milkClickOffset.x;
        milk.y = mouseY - milkClickOffset.y;
    }
}

//Egg Functions:
function startEggDrag(event:MouseEvent):void
{
    eggClickOffset = new Point(event.localX,event.localY);
}
function stopEggDrag(event:MouseEvent):void
{
    eggClickOffset = null;
}
function dragEgg(event:Event):void
{
    if (eggClickOffset != null)
    {// must be dragging
        egg.x = mouseX - eggClickOffset.x;
        egg.y = mouseY - eggClickOffset.y;
    }
}

1 Ответ

2 голосов
/ 13 марта 2012

потому что вы добавляете eventListener на сцену, а не в мувиклип

//Milk Event listeners:;
milk.mouseChildren = false;
milk.addEventListener(MouseEvent.MOUSE_DOWN, startMilkDrag);
milk.addEventListener(MouseEvent.MOUSE_UP, stopMilkDrag);
milk.addEventListener(Event.ENTER_FRAME, dragMilk);

//Egg Event listeners:
egg.mouseChildren = false;
egg.addEventListener(MouseEvent.MOUSE_DOWN, startEggDrag);
egg.addEventListener(MouseEvent.MOUSE_UP, stopEggDrag);
egg.addEventListener(Event.ENTER_FRAME, dragEgg);
...