У меня есть приложение Flex, которое отображает коллекцию предметов в одном из нескольких List
с, в зависимости от того, как классифицируется предмет. Перетаскивая элементы между списками, пользователь запускает процесс на стороне сервера, который пытается переклассифицировать элементы. Затем процесс на стороне сервера возвращает некоторый XML, который либо содержит сообщение об ошибке, либо «ОК».
Требуется, чтобы пользовательский интерфейс выполнял перемещение с помощью перетаскивания, если сервер возвращает OK, и не выполняет никаких операций, если сервер возвращает ошибку. Использование обработчиков перетаскивания по умолчанию (установка dragEnabled=true
и dropEnabled=true
для List
s), по-видимому, всегда выполняет перетаскивание.
Насколько я могу судить, единственный способ для меня получить достаточный контроль над вещами, чтобы справиться с асинхронной проверкой сервера - это реализовать перетаскивание в и из списков вручную. Поэтому я прочитал документацию Adobe и попытался адаптировать их пример.
Проблема, с которой я столкнулся, заключается в том, что, насколько я могу судить, мне нужно обнаруживать перетаскивание, подключив событие mouseMove
в Списке. Затем я передаю список в качестве инициатора в процедуру DragManager.doDrag.
Работая таким образом, возникает ряд проблем: прокси-изображение по умолчанию - это размер всего списка, попытка использовать полосу прокрутки отключает обнаружение перетаскивания и т. Д. Очевидно, что я делаю что-то не так.
Кто-нибудь пробовал реализовать перетаскивание List
s вручную? Есть ли быстрый способ правильно определить события перетаскивания? Должен ли я охотиться за фактическим itemRenderer, который пользователь перетаскивает и передает в качестве инициатора?