Lorsqu’un utilisateur fait glisser un élément Clipboard vers les limites d’un composant visuel, celui-ci distribue les événements
nativeDragEnter
et
nativeDragOver
. Pour déterminer si le composant peut accepter l’élément Clipboard, les gestionnaires de ces événements peuvent vérifier les propriétés
clipboard
et
allowedActions
de l’objet événement. Pour signaler que le composant peut accepter le dépôt, le gestionnaire d’événement doit appeler la méthode
NativeDragManager.acceptDragDrop()
et transmettre une référence au composant récepteur. Si plusieurs écouteurs d’événement enregistrés appellent la méthode
acceptDragDrop()
, le dernier gestionnaire de la liste prime. L’appel
acceptDragDrop()
demeure valide jusqu’à ce que la souris quitte les limites de l’objet qui accepte l’élément, déclenchant ainsi l’événement
nativeDragExit
.
Si plusieurs actions sont autorisées par le paramètre
allowedActions
transmis à
doDrag()
, l’utilisateur peut indiquer l’action autorisée qu’il souhaite exécuter en maintenant enfoncée une touche de modification. Le gestionnaire de glissement modifie l’image associée au curseur pour indiquer à l’utilisateur l’action qui se produirait s’il achevait le dépôt. L’action prévue est signalée par la propriété
dropAction
de l’objet NativeDragEvent. L’action associée à un mouvement de glissement est définie à titre indicatif uniquement. Les composants impliqués dans le transfert doivent mettre en œuvre le comportement approprié. Pour achever une action de déplacement, par exemple, l’initiateur du glissement peut supprimer l’élément glissé et la cible du dépôt peut l’ajouter.
La cible du glissement peut limiter l’action de dépôt à l’une des trois actions gérées en définissant la propriété
dropAction
de la classe NativeDragManager. Si un utilisateur tente de sélectionner une autre action par le biais du clavier, NativeDragManager affiche le curseur
unavailable
. Définissez la propriété
dropAction
des gestionnaires associés aux événements
nativeDragEnter
et
nativeDragOver
.
L’exemple suivant illustre un gestionnaire associé à l’événement
nativeDragEnter
ou
nativeDragOver
. Ce gestionnaire accepte un mouvement de glissement vers l’intérieur sous réserve que l’objet Clipboard en cours de glissement contienne des données au format texte.
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
}
}