Podstawy przeciągania i upuszczania w środowisku AIR

Adobe AIR 1.0 i starsze wersje

Skrócone objaśnienia i przykłady kodu ilustrujące użycie techniki przeciągania i upuszczania w aplikacji AIR zawierają następujące artykuły w witrynie Adobe Developer Connection:

Interfejs API do przeciągania i upuszczania zawiera następujące klasy:

Pakiet

Klasy

flash.desktop

Stałe używane w interfejsie API przeciągania i upuszczania zdefiniowane są w następujących klasach:

flash.events

NativeDragEvent

Etapy gestu przeciągania i upuszczania

Gest przeciągania i upuszczania składa się z trzech etapów:

Inicjowanie
Użytkownik inicjuje operację przeciągania i upuszczania przez przeciąganie ze składnika lub z elementu składnika, przytrzymując wciśnięty przycisk myszy. Składnik będący źródłem przeciąganego elementu wskazywany jest zazwyczaj jako inicjator przeciągania i wywołuje zdarzenia nativeDragStart i nativeDragComplete . Aplikacja Adobe AIR rozpoczyna operację przeciągania przez wywołanie metody NativeDragManager.doDrag() w odpowiedzi na zdarzenie mouseDown lub mouseMove .

Jeśli operacja przeciągania zostanie zainicjowana spoza aplikacji AIR, nie istnieje obiekt inicjujący, który mógłby wygenerować zdarzenia nativeDragStart lub nativeDragComplete .

Przeciąganie
Przytrzymując wciśnięty przycisk myszy, użytkownik przesuwa kursor myszy do innego składnika, aplikacji lub na inny pulpit. W czasie trwania operacji przeciągania obiekt inicjatora wywołuje zdarzenia nativeDragUpdate . (To zdarzenie nie jest jednak wywoływane w środowisku AIR dla platformy Linux). W momencie gdy użytkownik przesunie mysz nad obiekt, który może być obiektem docelowym upuszczenia w aplikacji AIR, obiekt ten wywołuje zdarzenie nativeDragEnter . Moduł obsługi zdarzenia może sprawdzić obiekt zdarzenia, aby określić, czy przeciągane dane są dostępne w formacie akceptowanym przez obiekt docelowy; jeśli tak, użytkownik będzie mógł upuścić dane na obiekt docelowy, wywołując metodę NativeDragManager.acceptDragDrop() .

Tak długo, jak gest przeciągania pozostaje na obiektem interaktywnym, obiekt ten wywołuje zdarzenia nativeDragOver . Jeśli gest przeciągania opuści obiekt interaktywny, obiekt wywoła zdarzenie nativeDragExit .

Upuszczanie
Użytkownik zwalania przycisk myszy nad pożądanym obiektem docelowym upuszczania. Jeśli docelowy obiekt jest aplikacją AIR lub składnikiem, wówczas obiekt docelowy wywołuje zdarzenie nativeDragDrop . Moduł obsługi zdarzeń może uzyskać dostęp do przesyłanych danych z obiektu zdarzenia. Jeśli obiekt docelowy znajduje się poza środowiskiem AIR, upuszczenie obsłuży system operacyjny lub inna aplikacja. W obu przypadkach obiekt inicjujący wywoła zdarzenie nativeDragComplete (jeśli przeciąganie rozpoczęte zostało w środowisku AIR).

Klasa NativeDragManager steruje oboma gestami: przeciągania do wewnątrz i przeciągania na zewnątrz. Wszystkie elementy klasy NativeDragManager są statyczne, dlatego nie należy tworzyć instancji tej klasy.

Obiekt Clipboard

Dane przeciągane do lub z aplikacji lub składnika zawarte są w obiekcie Clipboard. Pojedynczy obiekt Clipboard może udostępniać różne reprezentacje tej samej informacji, aby zwiększyć prawdopodobieństwo, że inna aplikacja rozpozna i użyje danych. Na przykład: obraz może zostać umieszczony jako dane obrazu, obiekt serializowany Bitmap lub plik. Renderowanie danych można odroczyć dla funkcji renderującej, która nie zostanie wywołana, dopóki nie zostaną wczytane dane.

Po rozpoczęciu gestu przeciągania dostęp do obiektu Clipboard można uzyskać jedynie z modułu obsługi zdarzeń nativeDragEnter , nativeDragOver i nativeDragDrop . Po zakończeniu gestu przeciągania nie można odczytać obiektu Clipboard i użyć go ponownie.

Obiekt aplikacji można przesłać jako odwołanie lub jako obiekt serializowany. Odwołania są poprawne tylko w aplikacji źródłowej. Przesyłanie obiektów serializowanych jest dozwolone między aplikacjami AIR, ale tylko dla obiektów, które można poprawnie serializować i przywracać później do postaci pierwotnej. Obiekty, które są serializowane, konwertowane są do formatu AMF3 (Action Message Format for ActionScript 3) — formatu przesyłania danych opartym na ciągach znaków.

Praca ze środowiskiem Flex

W większości przypadków podczas tworzenia aplikacji Flex lepszym rozwiązaniem jest korzystanie z interfejsu API do przeciągania i upuszczania środowiska Adobe® Flex™. Środowisko Flex dostarcza odpowiedniego zestawu funkcji w czasie działania aplikacji Flex w środowisku AIR (używa wewnątrz klasy NativeDragManager środowiska AIR). Środowisko Flex zachowuje również bardziej ograniczony zestaw funkcji, gdy aplikacja lub składnik uruchamiane są w bardziej restrykcyjnym środowisku przeglądarki. Klas środowiska AIR nie można używać w składnikach lub aplikacjach, które działają poza środowiskiem wykonawczym AIR.