PDA

Просмотр полной версии : Проблема с отслеживанием объектов


Sweet07
25.01.2012, 21:55
Добрый день.
Столкнулся с проблемой взаимодействия мувиков при их перемещении.
Есть код перемещения объекта:
box1_mc.myHomeX = box1_mc.x;
box1_mc.myHomeY = box1_mc.y;

box1_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
box1_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
function pickupObject(event:MouseEvent):void {
event.target.startDrag(true);
}
function dropObject(event:MouseEvent):void {
event.target.stopDrag();
if (event.target.dropTarget.parent.name == "target1"){
event.target.x=box1_mc.myHomeX;
event.target.y=box1_mc.myHomeY;
} elseif {
//box1_mc отпущен над target2, то box1_mc.x= target2.x; box1_mc.y= target2.y;
} else {
box1_mc.x=box1_mc.myHomeX;
box1_mc.y=box1_mc.myHomeY;
}

}

Такая задача: как сделать, чтоб при перетаскивании мувика box_mс, цели t1_mc и t2_mc меняли состояние, если box1_mc проносится над ними?

elder_Nosferatu
26.01.2012, 02:00
Для отслеживания во время движения используйте MouseEvent.MOUSE_MOVE.

Sweet07
26.01.2012, 14:12
Уже пробовал, но из-за того, что под мышью находится перетаскиваемый объект, реакции нет.

elder_Nosferatu
26.01.2012, 14:18
Уже пробовал, но из-за того, что под мышью находится перетаскиваемый объект, реакции нет.

Можно спрашивать MouseEvent.MOUSE_MOVE у stage. Тогда не важно что под курсором

Добавлено через 7 минут
...
box1_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
box1_mc.addEventListener(MouseEvent.MOUSE_UP, dropObject);
box1_mc.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveObject);

function pickupObject(event:MouseEvent):void {
// ...
}
function dropObject(event:MouseEvent):void {
// ...
}
function moveObject(event:MouseEvent):void {
//...
}
...

Добавлено через 9 минут
Правда тогда event.target уже не будет указывать на box1_mc

Genzo
26.01.2012, 14:29
Дополню :
box1_mc.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveObject);
function moveObject(event:MouseEvent):void {
if(box1_mc.hitTestObject(target2))
{
//бокс касается таргет2
}
}

Sweet07
26.01.2012, 23:12
А как сделать чтоб происходило действие, если box1_mc покидает зону target2?

Inet_PC
27.01.2012, 00:24
to Sweet07 Зачем же вы стерли свою благодарность?

Sweet07
27.01.2012, 01:20
Спс что подметили, это было непреднамеренно.
Genzo, ещё раз: большое спасибо.