Cuando un usuario arrastra un elemento del portapapeles para introducirlo dentro de los límites de un componente visual, el componente distribuye eventos nativeDragEnter y nativeDragOver events. Para determinar si el componente puede aceptar el elemento del portapapeles, los controladores de estos eventos pueden comprobar las propiedades clipboard y allowedActions del objeto de evento. Para indicar que el componente puede aceptar que se le coloque el elemento, el controlador de eventos debe llamar al método NativeDragManager.acceptDragDrop(), pasando una referencia al componente receptor. Si hay más de un detector de eventos registrado que llama al método acceptDragDrop(), tiene preferencia el último controlador de la lista. La llamada al método acceptDragDrop() sigue siendo válida hasta que el ratón sale fuera del objeto receptor, activando el evento nativeDragExit.
Si se admite más de una acción en el parámetro allowedActions que se pasa a doDrag(), el usuario puede pulsar una tecla modificadora para indicar cuál de las acciones admitidas pretenden realizar. El gestor de la acción de arrastrar cambia la imagen del cursor para indicar al usuario qué acción se produce si coloca el objeto. La propiedad dropAction del objeto NativeDragEvent notifica la acción que se pretende realizar. La acción configurada para un gesto de arrastrar no es más que orientativa. Los componentes involucrados en la transferencia deben implementar el comportamiento que corresponda. Para finalizar una acción de mover, por ejemplo, el iniciador de la operación de arrastrar puede eliminar el elemento arrastrado y el destino puede añadirlo.
El destino de arrastre puede limitar la acción de colocar a una de tres acciones posibles mediante la definición de la propiedad dropAction de la clase NativeDragManager. Si un usuario intenta elegir otra acción con el teclado, NativeDragManager muestra el cursor de indisposición. Defina la propiedad dropAction de los controladores para ambos eventos, nativeDragEnter y nativeDragOver.
El ejemplo siguiente ilustra un controlador de eventos para un evento nativeDragEnter o nativeDragOver. Este controlador sólo acepta un gesto de arrastrar hacia dentro si el portapapeles que se arrastra contiene datos en formato de texto.
import flash.desktop.NativeDragManager;
import flash.events.NativeDragEvent;
public function onDragIn(event:NativeDragEvent):void{
NativeDragManager.dropAction = NativeDragActions.MOVE;
if(event.clipboard.hasFormat(ClipboardFormats.TEXT_FORMAT)){
NativeDragManager.acceptDragDrop(this); //'this' is the receiving component
}
}