Una vez que he llamado al DragManager.acceptDrag
, ¿hay alguna forma de "no aceptar" el arrastre? Supongamos que tengo una vista que puede aceptar arrastrar y soltar, pero solo en ciertas áreas. Una vez que el usuario se arrastra sobre una de estas áreas llamo al DragManager.acceptDrag(this)
(desde un controlador DragEvent.DRAG_OVER
), pero si el usuario se muda de esta área, me gustaría cambiar el estado del arrastre para que no se acepte y muestre la retroalimentación DragManager.NONE
. Sin embargo, ni llamar DragManager.acceptDrag(null)
ni DragManager.showFeedback(DragManager.NONE)
parece tener ningún efecto. Una vez que acepté el arrastre y establecí el tipo de comentario, parece que no puedo cambiarlo.¿Cómo puedo "eliminar" un arrastre en Flex?
Solo para aclararlo: las áreas donde el usuario debería poder caídas no son componentes o incluso objetos de visualización, de hecho son solo rangos en el texto de un campo de texto (como la selección). Si hubieran sido sus propios componentes, podría haberlo resuelto haciendo que cada uno de ellos aceptara los eventos de arrastre individualmente. Creo que podría crear componentes de proxy que floten sobre el texto para emularlo, pero prefiero no hacerlo si no es necesario.
he conseguido que funcione tanto en el aire y el navegador ahora, pero sólo al someter los componentes del proxy en la parte superior de los rangos de texto en el que debe ser capaz de dejar caer las cosas. De esa forma obtengo la respuesta correcta y las gotas no se aceptan automáticamente en la salida de arrastre.
Esto es lo más curioso de D & D en AIR:
DragManager.doDrag(initiator, source, event, dragImage, offsetX, offsetY);
En Flex basado en el navegador, y offsetX
offsetY
debe ser negativo (lo que dice la documentación, y funciona muy bien). Sin embargo, cuando ejecuta exactamente el mismo código en AIR, tiene que hacer que los desplazamientos sean positivos. Los mismos números, pero positivos. Eso es muy, muy raro.
He probado un poco más y lo @maclema obras, pero no si se ejecuta en AIR. Parece que arrastrar y soltar en AIR es diferente. Es realmente, muy raro porque no solo la retroalimentación no se muestra correctamente, y no es posible dejar de recibirla, pero las coordenadas también están completamente apagadas. Acabo de probar mi aplicación en un navegador en lugar de AIR y arrastrar y soltar está completamente roto.
Además, omitir el controlador dragEnter
funciona bien en AIR, pero lo rompe todo cuando se ejecuta en un navegador.
Al aceptar el arrastre en la 'manejador DRAG_ENTER' sólo empeora las cosas. Todavía no puedo rechazar el arrastre (llamar a 'DragManager.acceptDragDrop (null) 'no tiene ningún efecto, al menos no tiene efecto visible) y aceptar el arrastre al entrar elimina el poco control que tenía. Ahora, el + debajo del puntero se muestra tan pronto como el mouse ingresa al componente, en lugar de comenzar a mostrar cuando el usuario arrastró las áreas especiales. – Theo
bien, eso haría que el iniciador también sea un objetivo, mostrando el + cuando el usuario arrastra sobre ese componente (que definitivamente no debería, ya que no acepta caídas). Entonces eso tampoco funciona. – Theo