Adobe Air (wiwobooks.com Release)
unterbinden.
15.2.4 NativeDragManager- und Clipboard-Klasse
Der Platz im Übergang zwischen der AIR-Laufzeitumgebung und dem Betriebssystem wird durch die Klasse NativeDragManager des Pakets flash.desktop eingenommen. Da immer nur ein Objekt (oder je nach Anwendung eine einzelne Gruppe von Objekten) gleichzeitig mit der Maus »angefasst« und auf dem Bildschirm hin- und hergeschoben werden kann, braucht der NativeDragManager auch stets nur ein einzelnes zusammenhängendes Objektpaket zu verwalten (man darf gespannt sein, wie sich das im Hinblick auf die Multi-Touch-Eingabe in den nächsten Jahren entwickelt, aber das ist eine andere Geschichte).
Die NativeDragManager -Klasse verwaltet pro Drag & Drop-Operation ein Datenpaket in einer Clipboard -Instanz. Der Umgang mit dieser Instanz geschieht genau so, wie Sie es bereits im Zusammenhang mit der Zwischenablage kennengelernt haben. Sie bereiten also die in eine andere Anwendung zu übertragende Anwendung vor, wobei es auch in diesem Fall eine gute Idee ist, die Daten in allen Formaten auf den Weg zu bringen, die den geplanten Anwendungsmöglichkeiten entsprechen. So können Sie ein Bild beispielsweise als Bitmap-Daten übertragen, gleichzeitig jedoch die Beschreibung des Bildes als Text sowie eine Referenz zum Objekt – und dann vielleicht noch einen Hyperlink zur Urheberrechtsinformation im Internet. Grundsätzlich sind native Drag-Operationen nur mit interaktiven Objekten möglich, also Unterklassen der InteractiveObject -Klasse. Dazu zählen z. B. alle Sprites und Movieclips von Flash-basierten Anwendungen, nicht jedoch Bitmap - oder Video -Instanzen.
15.2.5 Drag-Aktion aus einer AIR-Anwendung heraus
Wenn Sie Daten aus Ihrer AIR-Anwendung herausbewegen wollen, müssen Sie die Daten auf eine geeignete Weise vorbereiten. Treffen Sie die geeignete Entscheidung: Wenn eine solche Operation nur selten vorkommt, sollten Sie die Daten erst vorbereiten, wenn diese ansteht. Ansonsten können Sie Daten in Ihrer Anwendung bereits dann aufbereiten, wenn Sie in Ihre Anwendung hineingelangen – ob nun durch Interaktion des Benutzers, Auslesen aus der Datenbank oder dem Dateisystem oder durch Abruf von einer entfernten Datenquelle. Das Vorbereiten der Daten selbst verläuft wie bei Copy&Paste-Operationen.
Lösungsweg
1. Vorbereiten der Quelldaten für das Ursprungsobjekt (das muss ein interaktives Objekt sein), von dem die Drag-Aktion ausgehen soll, in einer Clipboard - Instanz auf eine der beiden folgenden Weisen:
im Quelltext, der das Drag-Objekt initialisiert
im Ereignis-Listener auf eine Mausinteraktion, in der die Drag-Operation eingeleitet wird
2. Gegebenenfalls Setzen der Instanzeigenschaft mouseEnabled des Quellobjekts auf true , damit dieses Mausereignisse empfangen kann (falls diese nicht schon standardmäßig gesetzt ist).
3. Registrieren des Ereignis-Listeners für die gewünschte Mausinteraktion zum Start des Drag-Vorgangs (üblicherweise MouseEvent.MOUSE_DOWN )
4. (optional) Registrieren eines Ereignis-Listeners für NativeDragEvent.NATIVE_ DRAG_OVER , falls während des Bewegens des Objekts über andere Elemente eine Interaktion erfolgen soll.
5. Registrieren des Ereignis-Listeners für NativeDragEvent.NATIVE_DRAG_COMPLETE zur abschließenden Bearbeitung der Quelldaten (z. B. Löschen der Originaldaten bei Verschieben-Aktion)
6. Aufruf der statischen Methode doDrag() der Klasse NativeDragManager im Ereignis-Listener der Mausinteraktion. Parameter:
dragInitiator
das interaktive Objekt, von dem der Drag-Vorgang ausgeht. clipboard
das Clipboard -Objekt, das die zu übermittelnden Daten enthält.
dragImage
(optional) BitmapData -Objekt für ein während des Drag-Vorgangs stellvertretend für das Drag-Objekt anzuzeigende Bild.
offset
(optional) Abstand des Drag-Bildes zum Mauspunkt als Point -Instanz allowedActions
(optional) NativeDragOptions -Instanz, das die erlaubten bzw. nicht erlaubten Aktionen bestimmt (siehe Abschnitt 15.3)
7. Drop des Drag-Objekts innerhalb der AIR-Anwendung (siehe Abschnitt 15.2.6)
8. Abschluss der Drag-Operation im NativeDragEvent.NATIVE_DRAG_COMPLETE - Listener (falls vorhanden)
So geht es
Das nachfolgende Kurzbeispiel einer stark vereinfachten Flex-Anwendung zeigt ein Bild, das im Anwendungsverzeichnis liegt, in einer Image -Komponente an. An diese Komponente ist ein MouseEvent.MOUSE_MOVE -Ereignis-Listener angehängt, der die Bildunterschrift, die Bitmap -Daten sowie eine File -Referenz auf die Bilddatei in eine
Weitere Kostenlose Bücher