Как только я позвонил DragManager.acceptDrag
, есть ли способ «не принять» перетаскивание? Скажите, что у меня есть представление, которое может принимать перетаскивание, но только в определенных областях. Как только пользователь перетащит одну из этих областей, я вызываю DragManager.acceptDrag(this)
(из обработчика DragEvent.DRAG_OVER
), но если пользователь выйдет из этой области, я бы хотел изменить статус перетаскивания, чтобы он не был принят, и показать обратную связь DragManager.NONE
. Тем не менее, ни вызов DragManager.acceptDrag(null)
, ни DragManager.showFeedback(DragManager.NONE)
, похоже, не имеет никакого эффекта. После того, как я принял перетаскивание, установите тип обратной связи, который я не могу изменить.Как я могу «отказаться» от перетаскивания в Flex?
Просто, чтобы дать понять: области, в которых пользователь должен иметь возможность отказаться, не являются компонентами или даже отображают объекты, на самом деле они всего лишь пробегают текст текстового поля (например, выбор). Если бы они были отдельными компонентами, я мог бы решить это, заставив каждого из них принимать события перетаскивания индивидуально. Думаю, я мог бы создать прокси-компоненты, которые плавают над текстом, чтобы подражать ему, но я бы предпочел, если это не обязательно.
мне удалось заставить его работать как в AIR и в браузере в настоящее время, но только поставив прокси-компоненты в верхней части диапазона текста, где вы должны быть в состоянии отказаться от вещей. Таким образом, я получаю правильную обратную связь, и капли автоматически не принимаются при перетаскивании.
Это странное дело о D & D в AIR:
DragManager.doDrag(initiator, source, event, dragImage, offsetX, offsetY);
В основе браузера Flex, offsetX
и offsetY
должен быть отрицательным (так сказано в документации, и она отлично работает). Однако при запуске точно такой же код в AIR вы должны сделать положительные сдвиги. Те же цифры, но положительные. Это очень, очень странно.
Я проверил некоторые и какие @maclema работы, но если вы работаете в AIR. Кажется, что перетаскивание в AIR отличается. Это действительно, действительно странно, потому что не только обратная связь не отображается правильно, но и невозможно, но координаты также полностью отключены. Я просто попробовал свое приложение в браузере вместо AIR, и перетаскивание полностью нарушено.
Кроме того, пропуская обработчик dragEnter
отлично работает в AIR, но прерывает все при работе в браузере.
Принимая сопротивление в `обработчик DRAG_ENTER` только делает вещи хуже. Я все еще не могу отказаться от перетаскивания (вызов `DragManager.acceptDragDrop (null)` не имеет никакого эффекта, по крайней мере, никакого видимого эффекта), и принятие перетаскивания на входе удаляет небольшой элемент управления, который у меня был. Теперь указатель + под указателем отображается, как только мышь входит в компонент, вместо того, чтобы показывать, когда пользователь перетаскивает специальные области. – Theo 2008-08-14 16:26:15