Некорректная отработка drag & drop
Здравствуйте!
У меня следующая проблема: Есть список объектов (пусть будут "юзеры"). Для этого списка есть функция удаления юзеров путем перетаскивания на кнопку. Для перетаскивания висит событие MOUSE_MOVE. Проблема в том, что слушатель ловит данные последнего юзера в списке (так как неизбежно протаскивается над ним) и его же удаляет. Т.е. тащишь на удаление первого юзера в списке, а удаляется последний. Проблема решается сменой MOUSE_MOVE на MOUSE_DOWN, Но! У меня на том же объекте висит событие CLICK которое не срабатывает если есть листнер по MOUSE_DOWN, какой-то конфликт возникает непонятный. Хотелось бы спросить как решить проблему одим из путей: 1) вместо CLICK повесить другой листнер (какой?) 2) Что то сделать с MOUSE_MOVE P.s. пробовал ставить stopImmediatePropagation(), но эффекта нет (или я что-то не так делал) |
1) MouseDown - запоминаете на ком - пихаете в _temp, например.
2) MouseMove - если с зажатой кнопкой и таргет совпадает с _temp (или _temp!=null), то пихаете все что нужно в DragSource и работаете с DragManager; 3) _temp = null; 4) Кнопка, на которую тянете, ловит DragEnter, DragDrop и работает с DragSource этих событий. |
Вы мне показали как различить наведение мыши и перетаскивание. А у меня нужно различить события клика и перетаскивания.
|
Я вам предложил использовать ДрагМенеджер, так как у меня создается ощущение, что вы делаете за него работу.
Клик = Даун + Ап на одном объекте, поэтому клика нет. Запоминайте кого тянете к помойке в локальную переменную, только если она = нулл. Тогда последний элемент будет в обломе. |
GBee, спасибо за совет, заработало. Сделал так:
Код AS3:
|
На здоровье :о))
Тока еще два замечания - совета: 1) Вы подписываетесь на два события, а потом отписываетесь от одного. Если человек, просто кликнет , останется подпись на драгИт и тп 2) (MouseEvent.MOUSE_UP, clickUp); для системменеджера добавьте, подписку и отписку. Чтобы когда утянули что то за флэшку и бросили там не было глюков |
Цитата:
Я так понимаю в clickFunc добавить Код AS3:
|
Попробовать было бы быстрее ;о)
|
Часовой пояс GMT +4, время: 17:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.