Wanneer een gebruiker een klemborditem binnen de grenzen van een visuele component sleept, verzendt de component de gebeurtenissen
nativeDragEnter
en
nativeDragOver
. Om te bepalen of de component het klemborditem kan accepteren, kunnen de handlers voor deze gebeurtenissen de eigenschappen
clipboard
en
allowedActions
van het gebeurtenisobject controleren. De gebeurtenishandler moet de methode
NativeDragManager.acceptDragDrop()
met een verwijzing naar de ontvangende component oproepen om aan te geven dat de component het neerzetten kan accepteren. Als meerdere geregistreerde gebeurtenislisteners de methode
acceptDragDrop()
oproepen, heeft de laatste handler in de lijst de hoogste prioriteit. De oproep
acceptDragDrop()
blijft geldig tot de muis buiten de grenzen van het accepterende object komt, waardoor de gebeurtenis
nativeDragExit
wordt geactiveerd.
Als er meerdere acties zijn toegestaan in de parameter
allowedActions
die aan
doDrag()
is doorgegeven, kan de gebruiker een aanpassingstoets ingedrukt houden om aan te geven welke actie moet worden uitgevoerd. De sleepbeheerder wijzigt de cursorafbeelding om de gebruiker te laten weten welke actie wordt uitgevoerd als het neerzetten wordt voltooid. De bedoelde actie wordt gerapporteerd aan de eigenschap
dropAction
van het NativeDragEvent-object. De ingestelde actie voor een sleepbeweging is slechts een voorstel. De componenten die bij de overdracht zijn betrokken, moeten het juiste gedrag implementeren. Het gesleepte item moet bijvoorbeeld door de sleepinitiator worden verwijderd en door het neerzetdoel worden toegevoegd om een verplaatsingsactie te voltooien.
De neerzetactie kan door het sleepdoel tot een van de drie mogelijke acties worden beperkt door de eigenschap
dropAction
van de klasse NativeDragManager in te stellen. Als een gebruiker een andere actie wil kiezen met het toetsenbord, wordt de cursor voor een
niet-beschikbare
actie weergegeven. Stel de eigenschap
dropAction
in de handlers voor de gebeurtenissen
nativeDragEnter
en
nativeDragOver
in.
In het volgende voorbeeld ziet u een gebeurtenishandler voor de gebeurtenis
nativeDragEnter
of
nativeDragOver
. Deze handler accepteert alleen een insleepbeweging als het klembord dat wordt gesleept tekst bevat.
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
}
}