Quando un utente trascina un elemento degli appunti nei limiti di un componente visivo, il componente invia eventi
nativeDragEnter
e
nativeDragOver
. Per determinare se il componente può accettare l'elemento di appunti, il gestore di questi eventi può verificare le proprietà
clipboard
e
allowedActions
dell'oggetto evento. Per segnalare che il componente possa accettare il rilascio, il gestore eventi deve chiamare il metodo
NativeDragManager.acceptDragDrop()
, passando un riferimento al componente ricevente. Se più di un listener di eventi registrato chiama il metodo
acceptDragDrop()
, l'ultimo gestore dell'elenco ha la precedenza. La chiamata
acceptDragDrop()
rimane valida finché il mouse non lascia i limiti dell'oggetto accettante, attivando l'evento
nativeDragExit
.
Se è concessa più di un'azione nel parametro
allowedActions
passato a
doDrag()
, l'utente è in grado di indicare quale delle azioni concesse intende eseguire tenendo premuto un tasto modificatore. Il gestore di trascinamento modifica l'immagine del cursore per indicare all'utente quale azione si verificherebbe una volta completato il rilascio. L'azione desiderata è riportata dalla proprietà
dropAction
dell'oggetto NativeDragEvent. L'azione impostata per il movimento di trascinamento è solo consultivo. I componenti coinvolti nel trasferimento devono implementare il comportamento appropriato. Per completare un'azione di spostamento, ad esempio, il promotore del trascinamento potrebbe rimuovere l'elemento trascinato e la destinazione di rilascio potrebbe aggiungerla.
La destinazione di trascinamento può limitare l'azione di rilascio a una delle tre possibili azioni impostando la proprietà
dropAction
della classe NativeDragManager. Se un utente cerca di selezionare un'azione differente mediante la tastiera, la classe NativeDragManager visualizza il cursore
non disponibile
. Impostate la proprietà
dropAction
nei gestori per entrambi gli eventi
nativeDragEnter
e
nativeDragOver
.
L'esempio seguente illustra un gestore eventi per un evento
nativeDragEnter
o
nativeDragOver
Tale gestore accetta solo un movimento di trascinamento verso interno se gli appunti trascinati contengono dati in formato testo.
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
}
}