Eine kurze Erklärung sowie Codebeispiele zum Drag & Drop in AIR-Anwendungen finden Sie in den folgenden Kurzanleitungen in der Adobe Developer Connection:
Die Drag & Drop-API umfasst die folgenden Klassen:
Paket
|
Klassen
|
flash.desktop
|
Innerhalb der Drag & Drop-API verwendete Konstanten werden in den folgenden Klassen definiert:
|
flash.events
|
NativeDragEvent
|
Phasen der Drag & Drop-Bewegungen
Die Drag & Drop-Bewegung setzt sich aus drei Phasen zusammen:
-
Initiation
-
Der Benutzer initiiert eine Drag & Drop-Operation, indem er von einer Komponente oder einem Element in einer Komponente aus zu Ziehen beginnt und dabei die Maustaste gedrückt hält.
Die Komponente, aus der das gezogene Element stammt, wird in der Regel mit „Ziehinitiator“ bezeichnet, denn sie löst die Ereignisse
nativeDragStart
und
nativeDragComplete
aus. Eine Adobe AIR-Anwendung beginnt eine Ziehoperation, indem sie die Methode
NativeDragManager.doDrag()
als Reaktion auf ein
mouseDown
- oder
mouseMove
-Ereignis aufruft.
Wenn die Ziehoperation außerhalb einer AIR-Anwendung eingeleitet wurde, gibt es kein Initiatorobjekt, das
nativeDragStart
- oder
nativeDragComplete
-Ereignisse auslösen kann.
-
Ziehen
-
Während die Maustaste noch gehalten wird, verschiebt der Benutzer den Mauscursor auf eine andere Komponente, Anwendung oder den Desktop.
Solange das Element gezogen wird, löst das Initiatorobjekt kontinuierlich
nativeDragUpdate
-Ereignisse aus. (Dieses Ereignis wird in AIR für Linux nicht ausgelöst.) Wenn der Benutzer den Mauscursor über ein mögliches Ablageziel in einer AIR-Anwendung führt, löst das Ablageziel ein
nativeDragEnter
-Ereignis aus. Die Ereignisprozedur kann das Ereignisobjekt untersuchen, um festzustellen, ob die gezogenen Daten in einem Format vorliegen, das vom Ziel akzeptiert wird. Ist dies der Fall, kann man dem Benutzer durch Aufruf der Methode
NativeDragManager.acceptDragDrop()
die Möglichkeit zum Ablegen der Daten geben.
Solange die Ziehbewegung über einem interaktiven Objekt bleibt, löst dieses kontinuierlich
nativeDragOver
-Ereignisse aus. Verlässt die Ziehbewegung das interaktive Objekt, löst es ein
nativeDragExit
-Ereignis aus.
-
Ablegen
-
Der Benutzer lässt die Maustaste über dem gewünschten Ablageziel los.
Handelt es sich bei dem Ziel um eine AIR-Anwendung oder -Komponente, so löst das Zielobjekt ein
nativeDragDrop
-Ereignis aus. Die Ereignisprozedur kann auf die übertragenen Daten aus dem Ereignisobjekt zugreifen. Befindet sich das Ziel außerhalb von AIR, wird die Drop-Operation vom Betriebssystem oder von einer anderen Anwendung abgewickelt. In beiden Fällen löst das initiierende Objekt ein
nativeDragComplete
-Ereignis aus (wenn die Ziehoperation aus AIR heraus gestartet wurde).
Die NativeDragManager-Klasse steuert sowohl das Hereinziehen als auch das Herausziehen. Alle Mitglieder der NativeDragManager-Klasse sind statisch; erstellen Sie keine Instanz dieser Klasse.
Das Clipboard-Objekt
Daten, die in eine Anwendung oder Komponente hineingezogen oder aus einer Anwendung oder Komponente herausgezogen werden, befinden sich in einem Clipboard-Objekt. Ein einzelnes Clipboard-Objekt kann mehrere Repräsentationen derselben Information verfügbar machen, sodass sich die Wahrscheinlichkeit, dass eine andere Anwendung diese Daten interpretieren und weiterverarbeiten kann, erhöht wird. Ein Bild beispielsweise könnte in Form von Bilddaten, als serialisiertes Bitmap-Objekt oder als Datei eingefügt werden. Das Rendern der Daten in einem bestimmten Format kann an eine Renderfunktion weitergereicht werden, die aber erst aufgerufen wird, wenn die Daten gelesen werden.
Nachdem eine Ziehbewegung gestartet wurde, kann nur eine Ereignisprozedur für die Ereignisse
nativeDragEnter
,
nativeDragOver
oder
nativeDragDrop
auf das Clipboard-Objekt zugreifen. Nachdem die Ziehbewegung beendet wird, kann das Clipboard-Objekt nicht mehr gelesen oder wiederverwendet werden.
Ein Anwendungsobjekt kann als Verweis übertragen werden oder als serialisiertes Objekt. Verweise sind nur innerhalb der Ursprungsanwendung zulässig. Serialisierte Objektübertragungen zwischen AIR-Anwendungen sind zulässig, können aber nur bei Objekten verwendet werden, die gültig bleiben, wenn sie serialisiert und deserialisiert werden. Objekte, die serialisiert werden, werden in das Action Message Format für ActionScript 3 (AMF3) konvertiert, einem stringbasierten Datenübertragungsformat.
Arbeiten mit der Flex-Architektur
Beim Erstellen von Flex-Anwendungen ist es meist besser, die Adobe® Flex™-Drag & Drop-API zu verwenden. Die Flex-Architekur stellt ein entsprechendes Set an Leistungsmerkmalen zur Verfügung, wenn in AIR eine Flex-Anwendung ausgeführt wird (sie verwendet den AIR-NativeDragManager intern). Flex unterhält ein begrenzteres Set an Leistungsmerkmalen, wenn eine Anwendung oder Komponente innerhalb der restriktiveren Browserumgebung ausgeführt wird. AIR-Klassen können nicht in Komponenten oder Anwendungen verwendet werden, die außerhalb der AIR-Laufzeitumgebung verwendet werden.
|
|
|