Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с отслеживанием объектов (http://www.flasher.ru/forum/showthread.php?t=174446)

Sweet07 25.01.2012 21:55

Проблема с отслеживанием объектов
 
Добрый день.
Столкнулся с проблемой взаимодействия мувиков при их перемещении.
Есть код перемещения объекта:
Код AS3:

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

Цитата:

Сообщение от Sweet07 (Сообщение 1059256)
Уже пробовал, но из-за того, что под мышью находится перетаскиваемый объект, реакции нет.

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

Добавлено через 7 минут
Код AS3:

...
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

Дополню :
Код AS3:

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, ещё раз: большое спасибо.


Часовой пояс GMT +4, время: 04:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.