Grunderna i dra och släpp i AIR

Adobe AIR 1.0 och senare

Följande snabbstartartiklar hos Adobe Developer Connection innehåller korta förklaringar och kodexempel på hur du använder dra och släpp i ett AIR-program:

API:et för dra och släpp innehåller följande klasser.

Paket

Klasser

flash.desktop

Konstanterna som används med API:et för dra och släpp definieras i följande klasser:

flash.events

NativeDragEvent

Gestfaser för dra och släpp

Dra och släpp-gesten har tre faser:

Initiering
En användare initierar en dra och släpp-åtgärd genom att dra från en komponent, eller ett objekt i en komponent, samtidigt som han eller hon håller ned musknappen. Komponenten som utgör källan för objektet som dras betecknas vanligtvis som draginitieraren och skickar händelserna nativeDragStart och nativeDragComplete. Ett Adobe AIR-program startar en dra-åtgärd genom att anropa metoden NativeDragManager.doDrag() som svar på en mouseDown- eller mouseMove-händelse.

Om dra-åtgärden påbörjas utanför ett AIR-program finns det inget initieringsobjekt som skickar nativeDragStart- eller nativeDragComplete-händelser.

Dra
När användaren håller ned musknappen flyttas musmarkören till en annan komponent, till ett program eller till skrivbordet. Så länge dragningen pågår skickar initieringsobjektet nativeDragUpdate-händelserna. (Den här händelsen skickas emellertid inte i AIR för Linux.) När användaren flyttar musen över ett möjligt släppmål i ett AIR-program skickar släppmålet en nativeDragEnter-händelse. Händelsehanteraren kan granska händelseobjektet för att ta reda på om de data som dras är tillgängliga i ett format som accepteras på målet och, om så är fallet, låta användare släppa data på det genom att anropa metoden NativeDragManager.acceptDragDrop().

Så länge dragningsgesten finns kvar över ett interaktivt objekt skickar objektet nativeDragOver-händelser. När dragningsgesten lämnar det interaktiva objektet skickas en nativeDragExit-händelse.

Släppa
Användaren släpper musknappen över ett möjligt släppmål. Om målet är ett AIR-program eller en AIR-komponent kommer målobjektet att skicka en nativeDragDrop-händelse. Händelsehanteraren kan få tillgång till den överförda datan från händelseobjektet. Om målet finns utanför AIR hanterar operativsystemet eller andra programhanterare släppningen. I båda fallen skickar initieringsobjektet en nativeDragComplete-händelse (om dragningen börjar från AIR).

Klassen NativeDragManager kontrollerar både indragnings- och utdragningsgester. Alla medlemmar i klassen NativeDragManager är statiska, så du ska inte skapa en instans av den här klassen.

Objektet Clipboard

Data som dras in till eller ut från ett program eller en komponent som finns i ett Clipboard-objekt. Ett enda Clipboard-objekt kan göra olika representationer tillgängliga av samma information så att chanserna ökar att ett annat program kan förstå och använda dessa data. En bild kan till exempel inkluderas som bilddata, ett serialiserat Bitmap-objekt och som en fil. Återgivningen av data i ett format kan skjutas upp till en återgivningsfunktion som inte anropas förrän informationen läses.

När en dragningsgest har startat kan objektet Clipboard bara nås inifrån en händelsehanterare för händelserna nativeDragEnter, nativeDragOver och nativeDragDrop. När dragningsgesten är färdig kan Clipboard-objektet inte längre läsas eller återanvändas.

Ett programobjekt kan överföras som en referens och som ett serialiserat objekt. Referenser är endast giltiga inom originalprogrammet. Serialiserade objekt kan överföras mellan AIR-program, men kan bara användas med objekt som förblir giltiga när det serialiseras och deserialiseras. Objekt som serialiseras konverteras till Action Message Format för ActionScript 3 (AMF3), ett strängbaserat dataöverföringsformat.

Arbeta med Flex-ramverket

I de flesta fall är det bättre att använda API:et för dra och släpp i Adobe® Flex™ när du bygger Flex-program. Flex-ramverket har motsvarande funktioner när ett Flex-program körs i AIR (det använder AIR NativeDragManager internt). Flex upprätthåller också begränsade funktioner när ett program eller en komponent körs i den mer restriktiva webbläsarmiljön. AIR-klasser kan inte användas i komponenter eller program som körs utanför AIR-körningsversionen.