Пакет | flash.desktop |
Интерфейс | public interface IFilePromise |
Средство реализации | MediaPromise, URLFilePromise |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 2 |
Предварительный образ файла представляет собой формат буфера перетаскивания, который дает пользователю возможность перетащить пока не существующий файл за пределы программы AIR. AIR использует методы и свойства, определенные интерфейсом IFilePromise, чтобы получить доступ к данным, которые будут записаны после завершения перетаскивания предварительного образа файла.
После перетаскивания предварительного образа файла в подходящее местоположение AIR вызывает метод open()
объекта IFilePromise. В результате выполнения этого метода поставщик данных должен быть возвращен в качестве объекта, который реализует интерфейс IDataInput. Объект поставщика может быть представлен одним из встроенных классов, таких как ByteArray, FileStream, Socket и URLStream, или это может быть пользовательский класс.
Если доступ к данным поставщика осуществляется в синхронном режиме, например при использовании ByteArray, AIR считывает объем данных, указанный в свойстве bytesAvailable
экземпляра IDataInput, и записывает его в целевом файле.
Если же доступ к данным поставщика осуществляется в асинхронном режиме, например при использовании объекта Socket, AIR регулирует процесс считывания данных и их записи в файле, исходя из событий, отправляемых поставщиком. Данные считываются при получении каждого события progress, пока не будет получено событие complete или close. Среда выполнения прослушивает следующие события (но поставщик данных не должен отправлять каждое событие):
- Event.OPEN
- ProgressEvent.PROGRESS
- ProgressEvent.SOCKET_DATA
- Event.COMPLETE
- Event.CLOSE
- IOErrorEvent.IOERROR
- SecurityErrorEvent.SECURITY_ERROR
- HTTPStatusEvent.HTTP_STATUS
- HTTPStatusEvent.HTTP_RESPONSE_STATUS
Когда доступны данные, пользовательские классы поставщиков данных должны отправлять событие progress
или socketData
. По аналогии, после завершения чтения всех запрошенных данных должно отправляться событие complete
или close
. События ошибок сообщают среде выполнения о том, что выполнить передачу данных не удалось и ее следует прервать. При необходимости должны отправляться и другие события с целью упрощения обработки ошибок и отладки логики программы.
Методы, определяемые с помощью IFilePromise, должны вызываться средой выполнения AIR только после завершения операции перетаскивания. Обычно разработчикам не следует вызывать эти методы с помощью кода программы.
Примечание. Класс URLFilePromise, доступный в библиотеке air.desktop, реализует интерфейс IFilePromise и использует экземпляр URLStream в качестве поставщика данных. Библиотека air.desktop включена в виде отдельных SWF- и SWC-файлов в AIR SDK.
Связанные элементы API
Свойство | Определено | ||
---|---|---|---|
isAsync : Boolean [только для чтения]
Указывает, поддерживается ли асинхронная передача данных. | IFilePromise | ||
relativePath : String [только для чтения]
Относительный путь и имя файла, который будет создан из данного предварительного образа. | IFilePromise |
Метод | Определено | ||
---|---|---|---|
Вызывается средой выполнения AIR по окончании чтения всех данных. | IFilePromise | ||
Возвращает объект поставщика данных. | IFilePromise | ||
Вызывается средой выполнения AIR, чтобы сообщить интерфейсу IFilePromise об ошибках чтения данных из объекта поставщика данных. | IFilePromise |
isAsync | свойство |
isAsync:Boolean
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 2 |
Указывает, поддерживается ли асинхронная передача данных.
Если имеет значение true
, то объект поставщика данных, возвращенный методом open()
, должен осуществлять интерфейс IEventDispatcher (или расширять другой реализующий его класс). Передача данных регулируется событиями progress
или socketData
. AIR ожидает эти события о ходе выполнения, пока не отправляется событие complete
или close
.
Если isAsync
возвращает значение false, среда выполнения AIR считает, что все данные сразу становятся доступными. В этом случае среда выполнения считывает свойство bytesAvailable
объекта поставщика данных, чтобы определить объем доступных данных, и синхронно считывает эти данные.
Реализация
public function get isAsync():Boolean
relativePath | свойство |
relativePath:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 2 |
Относительный путь и имя файла, который будет создан из данного предварительного образа.
Это свойство должно содержать действительный путь. В противном случае при завершении перетаскивания выдается ошибка аргумента.
Путь может включать подкаталоги, разрешение которых выполняется относительно местоположения перетаскивания. При необходимости создаются подкаталоги. При включении подкаталогов следует использовать константу File.separator
, чтобы вставить символ-разделитель, который используется для указания пути в текущей операционной системе. Указание .. в качестве комбинации клавиш для перехода к родительскому каталогу не поддерживается. При попытке выполнения выдается ошибка аргумента. Недопустимые символы файловой системы удаляются из пути, при этом ошибка не выдается.
Примечание. Чтобы позволить коду клиента задать путь, можно реализовать функцию установщика с подписью: function set relativePath( value:String ):void
.
Реализация
public function get relativePath():String
Выдает
ArgumentError — если в относительном пути используются комбинации .. для обозначения одного или нескольких вышестоящих каталогов, в которые вложено место назначения перетаскивания.
|
close | () | метод |
public function close():void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 2 |
Вызывается средой выполнения AIR по окончании чтения всех данных.
После вызова метода close()
для ссылки на объект, возращенной методом open()
, не будут вызываться никакие другие методы. Объект поставщика данных можно уничтожить.
open | () | метод |
public function open():IDataInput
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 2 |
Возвращает объект поставщика данных.
Объект поставщика данных должен реализовывать интерфейс IDataInput, который определяет методы для чтения данных. Если свойство isAsync
экземпляра IFilePromise возвращает значение true
, поставщик данных должен также поддерживать интерфейс IEventDispatcher. Следующие встроенные классы могут использоваться в качестве поставщика данных.
- ByteArray (синхронный)
- FileStream (синхронный или асинхронный)
- Socket (асинхронный)
- URLStream (асинхронный)
Также можно создать объект пользовательского класса, который реализует необходимые интерфейсы (или расширяет другой реализующий их класс).
ВозвращаетIDataInput — IDataInput — объект, реализующий интерфейс IDataInput. Если данные предоставляются в асинхронном режиме, возвращаемый объект также должен осуществлять интерфейс IEventDispatcher.
|
reportError | () | метод |
public function reportError(e:ErrorEvent):void
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | AIR 2 |
Вызывается средой выполнения AIR, чтобы сообщить интерфейсу IFilePromise об ошибках чтения данных из объекта поставщика данных.
Параметры
e:ErrorEvent — Событие ошибки, содержащее подробные сведения об ошибке.
|
Tue Jun 12 2018, 11:34 AM Z