Basisprincipes van slepen en neerzetten in AIR

Adobe AIR 1.0 of hoger

Lees voor een snelle uitleg van en codevoorbeelden van het gebruik van slepen en neerzetten in een AIR-toepassing, de volgende artikelen voor snel starten in de Adobe Developer Connection:

De API voor slepen en neerzetten bevat de volgende klassen.

Pakket

Klassen

flash.desktop

Constanten die worden gebruikt met de API voor slepen en neerzetten, zijn gedefinieerd in de volgende klassen:

flash.events

NativeDragEvent

Stadia van bewegingen voor slepen en neerzetten

De beweging voor slepen en neerzetten bestaat uit drie stadia:

Initiëren
Een gebruiker start het slepen en neerzetten door te slepen vanuit een component of een item in een component terwijl de muisknop is ingedrukt. De component waaruit het gesleepte item afkomstig is, wordt gewoonlijk de sleepinitiator genoemd en deze verzendt de gebeurtenissen nativeDragStart en nativeDragComplete . Een Adobe AIR-toepassing start een sleepactie door de NativeDragManager.doDrag() -methode aan te roepen na een mouseDown - of mouseMove -gebeurtenis.

Als de sleepbewerking is gestart van buiten een AIR-toepassing, is er geen initiator-object om een nativeDragStart - of nativeDragComplete -gebeurtenis te verzenden.

Slepen
Terwijl de muisknop is ingedrukt, verplaatst de gebruiker de muiscursor naar een andere component of toepassing, of naar het bureaublad. Zolang het slepen duurt, verzendt het initiatorobject nativeDragUpdate -gebeurtenissen. (Deze gebeurtenis wordt echter voor Linux niet in AIR verzonden. Wanneer de gebruiker de muis over een mogelijk neerzetdoel beweegt, verzendt het neerzetdoel de gebeurtenis nativeDragEnter . De gebeurtenishandler kan het gebeurtenisobject inspecteren om te bepalen of de gesleepte gegevens beschikbaar zijn in een indeling die het doel accepteert, en als dat het geval is, de gebruiker de gegevens daarop laten neerzetten door de methode NativeDragManager.acceptDragDrop() op te roepen.

Zolang de sleepbeweging over een interactief object plaatsvindt, verzendt dat object nativeDragOver -gebeurtenissen. Wanneer de sleepbeweging het interactieve object verlaat, verzendt het object de gebeurtenis nativeDragExit .

Neerzetten
De gebruiker laat de muisknop los op een geschikt neerzetdoel. Als het doel een AIR-toepasing of -component is, verzendt het doelobject een nativeDragDrop -gebeurtenis. De gebeurtenishandler kan toegang krijgen tot de gegevens die door het gebeurtenisobject worden overgedragen. Als het doel zich buiten AIR bevindt, wordt het neerzetten afgehandeld door het besturingssysteem of een andere toepassing. In beide gevallen verzendt het object dat de beweging initieert de gebeurtenis nativeDragComplete (als het slepen in AIR is gestart).

Met de klasse NativeDragManager worden zowel insleep- als uitsleepbewegingen beheerd. Alle leden van de klasse NativeDragManager zijn statisch; maak geen instantie van deze klasse.

Clipboard-objecten

Gegevens die in of uit een toepassing of component worden gesleept, bevinden zich in een Clipboard-object. Eén Clipboard-object kan verschillende weergaven van dezelfde gegevens beschikbaar maken om de kans te vergroten dat een andere toepassing de gegevens kan begrijpen en gebruiken. Een afbeelding kan bijvoorbeeld worden opgenomen als afbeeldingsgegevens, een geserialiseerd bitmapobject en een bestand. Het omzetten van de gegevens naar een bepaalde indeling kan worden uitgevoerd door een renderfunctie die pas wordt opgeroepen als de gegevens zijn gelezen.

Wanneer een sleepbeweging is gestart, is het Clipboard-object alleen toegankelijk vanuit een gebeurtenishandler voor de gebeurtenissen nativeDragEnter , nativeDragOver en nativeDragDrop . Nadat de sleepbeweging is beëindigd, kan het Clipboard-object niet worden gelezen of opnieuw worden gebruikt.

Een toepassingsobject kan worden overgedragen als een verwijzing en als een geserialiseerd object. Verwijzingen zijn alleen geldig binnen de brontoepassing. Geserialiseerde objecten kunnen worden overgedragen tussen AIR-toepassingen, maar kunnen alleen worden gebruikt met objecten die geldig blijven wanneer ze zijn geserialiseerd en gedeserialiseerd. Objecten die zijn geserialiseerd, worden geconverteerd naar de AMF3-indeling (Action Message Format voor ActionScript 3), een indeling voor gegevensoverdracht op basis van tekenreeksen.

Werken met het Flex-framework

In de meeste gevallen is het beter om de API voor slepen en neerzetten van Adobe® Flex™ te gebruiken bij het bouwen van Flex-toepassingen. Het Flex-framework beschikt over een equivalente functieset wanneer een Flex-toepassing wordt uitgevoerd in AIR (het maakt intern gebruik van de NativeDragManager van AIR). Flex beschikt ook over een beperkte functieset wanneer een toepassing of component wordt uitgevoerd in de browseromgeving, die meer beperkingen heeft. AIR-klassen kunnen niet worden gebruikt in componenten of toepassingen die buiten de runtimeomgeving van AIR worden uitgevoerd.