パッケージ | flash.desktop |
インターフェイス | public interface IFilePromise |
実装者 | MediaPromise, URLFilePromise |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 2 |
ファイルプロミスはドラッグ&ドロップクリップボード形式です。これにより、ユーザーは、まだ存在しないファイルを AIR アプリケーションからドラッグできます。AIR は、IFilePromise インターフェイスで定義されたメソッドおよびプロパティを使用して、ファイルプロミスがドロップされたときに書き込まれるデータにアクセスします。
ファイルプロミスが適切なターゲットにドロップされると、AIR は IFilePromise の open()
メソッドを呼び出します。このメソッドを実装すると、データプロバイダーが IDataInput インターフェイスを実装するオブジェクトとして返される必要があります。プロバイダーオブジェクトには、ビルトインクラス(ByteArray、FileStream、Socket、URLStream など)のいずれかまたはカスタムクラスを使用できます。
ByteArray などを使用して、データプロバイダーからのデータに同期的にアクセスする場合、AIR は IDataInput の bytesAvailable
プロパティが示すデータ量を読み取り、それを書き込み先のファイルに書き込みます。
Socket などを使用して、データプロバイダーからのデータに非同期的にアクセスする場合、AIR はプロバイダーが送出したイベントを使用し、データの読み取り処理を規制して、データをファイルに書き込みます。データは、complete イベントまたは close イベントを受信するまで、progress イベントごとに読み取られます。実行時に以下のイベントを監視します(ただし、データプロバイダーは必ずしもすべてのイベントを送出する必要はありません)。
- 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.separator
定数を使用して、現在のオペレーティングシステムに対応した適切なパス区切り文字を挿入してください。短縮形「..」を使用して、親ディレクトリへは移動できません。移動しようとすると、引数エラーがスローされます。ファイルシステムで使用できない文字はパスから除去されます。この際、エラーはスローされません。
注意:クライアントコードでパスを設定できるようにするには、署名付きの setter 関数(function set relativePath( value:String ):void
)を実装します。
実装
public function get relativePath():String
例外
ArgumentError — 相対パスが短縮形「..」を使用してドロップ先の 1 つ以上の親ディレクトリを辿っている場合。
|
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(同期または非同期)
- 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, 10:34 AM Z