![]() |
как сделать перемещение спрайта мышью
опишу суть проблемы:
1 имеется фоновый спрайт, на него добавляются спрайты потомки 2 необходимо двигать родительский спрайт, за спрайты потомки, т.е. наводим мышку на потомка, он подсвечивается, начинаем тянуть и вместе с ним тянется родительский класс собственно ничего сложного, я создал один спрайт, добавил в него спрайтов-потомков, повешал на них события разные, всё работает, но есть проблемы, которые уже два дня не могу решить(( перемеoение осуществляю используя start/stop drag, при уходе курсора мышки за экран, всё останавливается и скачет при возвращении, это первое, плюс необходимо осуществитьсброс перетаскивания, при попадании мышки на другой объект или выходу за пределы, пробовал вешать событие OUT, возникла проблема, фокус почему то определяется не у родителя, а у потомка, хотя слушатель на родителе Код AS3:
Код AS3:
|
можно сделать так
Вешаем на спрайты потомок слушатель Код AS3:
|
дело в том что у меня будет очень много потомков, по-моему не очень разумно вешать на каждый слушатель.
про энтерфрайм я думал, но это не лучшее решение, так как в сцене могут присутствовать и другие элементы, при наведении на которых мышью перетаскивание тоже должно останавливаться, т.е. мне нужно просто узнать какой элемент находиться в данный момент под мышью, либо придумать как сделать так что бы слушатель на родителе работал не с одним потомком, а со всеми сразу |
Код AS3:
|
Akopalipsis, вопрос был про завершение перетаскивания, а не про его начало, начало перетаскивания я делаю так же
в ващем примере если добавитm событие out срыв мыши происходит так же как и у меня |
Цитата:
если не вешать слушатели на потомки, остается таскать именно сцену, но слушатель может быть один, а в зависимости от выбранного объекта на сцене, выполнять предназначенный функционал. Если же роль сцены заключается лишь в том, что ее нужно таскать, при чем хватая в разных местах, будь то, объект, или просто пустая область, и больше не взаимодействовать с другими объектами, то достаточно наложить с верху прозрачный спрайт, который и будет отвечать за область захвата. или вы хотите таскать всю область хватая любой объект при этом не вешая на них слушатель? так не получится. |
Цитата:
PS: я конечно написал костыль, который позволяет это обойти, но хотелось бы нормальное решение услышать |
Код AS3:
|
Проверяй с какого объекта пришло событие и является ли он потомком.
Код AS1/AS2:
|
уберите страшный код пожалуйста:)
|
| Часовой пояс GMT +4, время: 01:26. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.