包 | flash.desktop |
接口 | public interface IFilePromise |
实现器 | MediaPromise, URLFilePromise |
语言版本: | ActionScript 3.0 |
运行时版本: | AIR 2 |
文件释放是一种拖放剪贴板格式,这种格式允许用户将尚不存在的文件拖出 AIR 应用程序外。AIR 使用 IFilePromise 接口定义的方法和属性访问要在放置 file promise 时写入的数据。
将 file promise 放置在合适的目标上后,AIR 会调用 IFilePromise open()
方法。此方法的实现必须将数据提供程序作为实现 IDataInput 接口的对象进行返回。提供程序对象可能是一个内置类(例如,ByteArray、FileStream、Socket 和 URLStream),也可能是一个自定义类。
如果以同步方式访问数据提供程序中的数据(例如,使用 ByteArray 访问),则 AIR 将读取 IDataInput bytesAvailable
属性所表示的数据量,然后将其写入目标文件。
如果以异步方式访问数据提供程序中的数据(例如,使用 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 运行时在完成拖放操作后进行调用。开发人员通常不应从他们自己的代码调用这些方法。
注意:air.desktop 库中提供的 URLFilePromise 类可实现 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 promise 时会引发参数错误。
路径可以包括子目录(根据放置位置进行解析)。根据需要创建子目录。当包括子目录时,使用 File.separator
常量为当前操作系统插入相应的路径分隔符。不允许使用 .. 快捷键导航到父级目录。如果尝试使用此快捷键,将引发参数错误。如果从路径中去掉无效的文件系统字符,将不会引发错误。
注意:若要允许客户端代码设置路径,可以实现带有签名的 setter 函数: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 接口,该接口定义读取数据的方法。如果 IFilePromise isAsync
属性返回 true
,则数据提供程序对象也必须实现 IEventDispatcher 接口。可将下列内置类用作数据提供程序:
- ByteArray(同步)
- FileStream(同步或异步)
- 套接字(异步)
- 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:04 AM Z