Как обнаружить опрокидывание элементов при перетаскивании мувиклипа над ними? - PullRequest
0 голосов
/ 21 октября 2010

У меня есть перетаскиваемый элемент, MovieClip, который вызывает startDrag () для себя при нажатии, и еще один MovieClip на сцене.

Мне нужен MovieClip для получения событий ROLL_OVER и ROLL_OUT во время перетаскиваемого MovieClipперетаскивается поверх него, но нижний клип не получает эти сообщения во время перетаскивания клипа поверх него.

По сути, ROLL_OVER отправляется только в самый верхний MovieClip под мышью,Обычно вы исправляете это с помощью некоторой комбинации mouseEnabled или mouseChildren в перекрывающих мувиклипах, но если вы делаете это с перетаскиваемым мувиклипом, это нарушает перетаскивание.Мне нужно определить, когда мышь находится над нижним MovieClip, независимо от того, какие MovieClips находятся над ним.

Итак, как мне это сделать?

Ответы [ 4 ]

1 голос
/ 21 октября 2010

Вы можете отключить взаимодействие с мышью для клипа, который перетаскивается, например.
На вашем MOUSE_DOWN мероприятии:

displayObject.startDrag();
// Disable mouse interactions for this object
displayObject.mouseEnabled = false;
// Disable mouse interactions for this objects children.
displayObject.mouseChildren = false;

Затем в вашем MOUSE_UP событии, когда вы звоните stopDrag(), вы можете включить его снова:

displayObject.mouseEnabled = true;
displayObject.mouseChildren = true;

Я не пробовал этого, но он должен остановить клип, который вы перетаскиваете, от получения каких-либо событий мыши.

* Только одна вещь заключается в том, что, поскольку сам клип не получает события мыши, событие MOUSE_UP не может быть помещено непосредственно на него, но должно быть размещено на его родительском объекте или сцене.

0 голосов
/ 21 октября 2010

объявляет функцию, которая проверяет, находятся ли координаты мыши внутри прямоугольника мувиклипа

при вызове startDrag () добавьте прослушиватель события ENTER_FRAME в клип на сцене и используйте эту функцию в качестве прослушивателя

при вызове stopDrag () - удалить слушателя

0 голосов
/ 21 октября 2010

Вы можете использовать метод hitTestObject ()

Это немного перебор :), но вы также можете использовать обнаружение столкновений
http://coreyoneil.com/portfolio/index.php?project=5

0 голосов
/ 21 октября 2010

использовать событие мыши MOUSE_OVER.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...