Pakiet | flash.desktop |
Interfejs | public interface IFilePromise |
Implementory | MediaPromise, URLFilePromise |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Obietnica pliku jest to informacja w specjalnym formacie schowka, która umożliwia przeciągnięcie pliku, który jeszcze nie istnieje, poza aplikację AIR. Środowisko AIR używa metod i właściwości zdefiniowanych w interfejsie IFilePromise do uzyskiwania dostępu do danych, które mają zostać zapisane w chwili upuszczenia obietnicy pliku.
Gdy obietnica pliku zostanie upuszczona na odpowiedni cel, środowisko AIR wywołuje metodę open()
interfejsu IFilePromise. Implementacja tej metody musi zwracać dostawcę danych jako obiekt implementujący interfejs IDataInput. Obiekt dostawcy może należeć do jednej z wbudowanych klas, takich jak ByteArray, FileStream, Socket i URLStream, lub do klasy niestandardowej.
Jeśli dostęp do danych dostawcy odbywa się synchronicznie, np. w przypadku tablicy ByteArray, środowisko AIR odczytuje ilość danych wskazaną przez właściwość bytesAvailable
interfejsu IDataInput i zapisuje te dane w pliku docelowym.
Jeśli dostęp do danych dostawcy odbywa się asynchronicznie, np. w przypadku klasy Socket, środowisko AIR wykorzystuje zdarzenia wywoływane przez dostawcę do sterowania procesem odczytywania danych i zapisywania ich w pliku. Dane są odczytywane po każdym zdarzeniu progress, aż do końca danych lub do odebrania zdarzenia close. Środowisko wykonawcze wykrywa następujące zdarzenia (ale dostawca danych nie musi wywoływać wszystkich tych zdarzeń):
- Event.OPEN
- ProgressEvent.PROGRESS
- ProgressEvent.SOCKET_DATA
- Event.COMPLETE
- Event.CLOSE
- IOErrorEvent.IOERROR
- SecurityErrorEvent.SECURITY_ERROR
- HTTPStatusEvent.HTTP_STATUS
- HTTPStatusEvent.HTTP_RESPONSE_STATUS
Niestandardowe klasy dostawców danych powinny wywoływać zdarzenie progress
albo zdarzenie socketData
, gdy dane będą dostępne. Podobnie, po odczytaniu wszystkich żądanych danych, powinno zostać wywołane zdarzenie complete
albo close
. Zdarzenia błędów informują środowisko wykonawcze, że transmisja danych nie powiodła się i należy ją przerwać. W razie potrzeby należy również wywoływać pozostałe zdarzenia w celu usprawnienia obsługi błędów i debugowania.
Metody zdefiniowane przez interfejs IFilePromise są przeznaczone wyłącznie do wywoływania przez środowisko AIR po ukończeniu operacji przeciągania i upuszczania. Programiści zwykle nie powinni wywoływać tych metod z własnego kodu.
Uwaga: Klasa URLFilePromise, dostępna w bibliotece air.desktop, implementuje interfejs IFilePromise i korzysta z obiektu URLStream jako dostawcy danych. Biblioteka air.desktop jest zawarta w odrębnych plikach SWF i SWC w pakiecie AIR SDK.
Powiązane elementy interfejsu API
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
isAsync : Boolean [tylko do odczytu]
Wskazuje, czy obsługiwane jest asynchroniczne przesyłanie danych. | IFilePromise | ||
relativePath : String [tylko do odczytu]
Ścieżka względna i nazwa pliku, który zostanie utworzony przez to przyrzeczenie pliku. | IFilePromise |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Wywoływana przez środowisko wykonawcze AIR po zakończeniu odczytu wszystkich danych. | IFilePromise | ||
Zwraca obiekt dostarczający dane. | IFilePromise | ||
Wywoływana przez środowisko wykonawcze AIR w celu poinformowania implementacji interfejsu IFilePromise o błędach, które występują podczas odczytywania danych z obiektu dostawcy danych. | IFilePromise |
isAsync | właściwość |
isAsync:Boolean
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Wskazuje, czy obsługiwane jest asynchroniczne przesyłanie danych.
W przypadku wartości true
obiekt dostawcy danych zwrócony przez metodę open()
musi implementować interfejs IEventDispatcher (lub rozszerzać klasę implementującą ten interfejs). Operacje przesyłania danych przebiegają pod wpływem zdarzeń progress
lub socketData
. Środowisko AIR oczekuje na te zdarzenia postępu danych, dopóki nie zostanie wywołane zdarzenie complete
lub close
.
Jeśli właściwość isAsync
zwraca wartość false, środowisko AIR przyjmuje, że dane są dostępne od razu. W takim przypadku środowisko odczytuje właściwość bytesAvailable
obiektu dostawcy danych w celu określenia ilości dostępnych danych i synchroniczne odczytuje tę ilość danych.
Implementacja
public function get isAsync():Boolean
relativePath | właściwość |
relativePath:String
[tylko do odczytu] Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Ścieżka względna i nazwa pliku, który zostanie utworzony przez tę obietnicę pliku.
Ta właściwość musi zwracać poprawną ścieżkę, gdyż w przeciwnym razie w momencie upuszczenia obietnicy pliku zostanie wygenerowany wyjątek błędu argumentów.
Ścieżka może zawierać podkatalogi, których położenie jest określane na podstawie miejsca upuszczenia. W razie potrzeby podkatalogi są tworzone. W ścieżkach zawierających podkatalogi należy używać stałej File.separator
jako separatora właściwego dla bieżącego systemu operacyjnego. Użycie skrótu .. oznaczającego przejście do katalogu nadrzędnego nie jest dozwolone. Próba użycia tego skrótu spowoduje wygenerowanie błędu argumentu. Znaki niepoprawne w danym systemie plików są usuwane ze ścieżki bez zgłaszania błędu.
Uwaga: Aby umożliwić kodowi klienta ustawienie ścieżki, można zaimplementować funkcję ustawiającą z podpisem: function set relativePath( value:String ):void
.
Implementacja
public function get relativePath():String
Zgłasza
ArgumentError — jeśli w ścieżce względnej używane są symbole .. oznaczający przejście do katalogów nadrzędnych miejsca docelowego upuszczenia.
|
close | () | metoda |
public function close():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Wywoływana przez środowisko wykonawcze AIR po zakończeniu odczytu wszystkich danych.
Po wywołaniu metody close()
nie będą wywoływane żadne metody odwołania do obiektu zwróconego przez metodę open()
. Obiekt dostawcy danych można bezpiecznie zniszczyć.
open | () | metoda |
public function open():IDataInput
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Zwraca obiekt dostawcy danych.
Obiekt dostawcy danych musi implementować interfejs IDataInput, który definiuje metody służące do odczytywania danych. Jeśli właściwość isAsync
interfejsu IFilePromise zwraca wartość true
, obiekt dostawcy danych musi także implementować interfejs IEventDispatcher. W charakterze dostawców danych można używać następujących klas wbudowanych:
- ByteArray (dostęp synchroniczny)
- FileStream (dostęp synchroniczny i asynchroniczny)
- Socket (dostęp asynchroniczny)
- URLStream (dostęp asynchroniczny)
Można również użyć obiektu klasy niestandardowej, która implementuje wymagane interfejsy (lub rozszerza klasę, która je implementuje).
ZwracaIDataInput — IDataInput Obiekt implementujący interfejs IDataInput. Jeśli dane są udostępniane asynchronicznie, zwrócony obiekt musi również implementować interfejs IEventDispatcher.
|
reportError | () | metoda |
public function reportError(e:ErrorEvent):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 2 |
Wywoływana przez środowisko wykonawcze AIR w celu poinformowania implementacji interfejsu IFilePromise o błędach, które występują podczas odczytywania danych z obiektu dostarczającego dane.
Parametry
e:ErrorEvent — Zdarzenie błędu zawierające szczegółowe informacje o błędzie.
|
Tue Jun 12 2018, 12:06 PM Z