適用於 Adobe® Flash® Platform 的 ActionScript® 3.0 參考
首頁  |  隱藏套件和類別清單 |  套件  |  類別  |  新增內容  |  索引  |  附錄  |  為什麼顯示英文?
篩選: 從伺服器擷取資料...
從伺服器擷取資料...
flash.desktop 

IFilePromise  - AS3

套件flash.desktop
介面public interface IFilePromise
實作者 MediaPromise, URLFilePromise

語言版本: ActionScript 3.0
執行階段版本: AIR 2

IFilePromise 介面會定義 AIR 執行階段在讀取檔案承諾的資料時會用到的介面。

檔案承諾是一種拖放剪貼簿格式,可以讓使用者拖曳 AIR 應用程式外尚不存在的檔案。AIR 會使用 IFilePromise 介面定義的各種方法和屬性,存取當放置檔案承諾時要寫入的資料。

當檔案承諾被放置到適當目標上,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 事件。同樣地,當所有要求的資料都已讀取後,會傳送 completeclose 事件。error 事件會通知執行階段,資料傳送已經失敗而且應該中止。適當時應該會傳送其他事件,以便協助處理錯誤以及進行應用程式邏輯的除錯。

IFilePromise 定義的方法,其唯一用途就是在拖放作業完成之後,讓 AIR 執行階段呼叫。開發人員通常不應該從自己的程式碼來呼叫這些方法。

注意:在 air.desktop 元件庫中提供的 URLFilePromise 類別,可實作 IFilePromise 介面並使用 URLStream 做為資料提供者。air.desktop 元件庫以獨立的 SWF 及 SWC 檔案包括在 AIR SDK 中。

相關 API 元素



公用屬性
 屬性定義自
      isAsync : Boolean
[唯讀] 指出是否支援非同步資料傳送。
IFilePromise
      relativePath : String
[唯讀] 這個檔案承諾即將建立之檔案的相對路徑和名稱。
IFilePromise
公用方法
 方法定義自
  
    close():void
讀取所有資料之後,由AIR 執行階段呼叫。
IFilePromise
  
    open():IDataInput
傳回 data provider 物件。
IFilePromise
  
由 AIR 執行階段呼叫,將從 data provider 物件讀取資料時發生的錯誤,通知 IFilePromise 實作錯誤。
IFilePromise
屬性詳細資訊
    

isAsync

屬性
isAsync:Boolean  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 2

指出是否支援非同步資料傳送。

如果為 true,則 open() 方法傳回的 data provider 物件必須實作 IEventDispatcher 介面 (或擴充一個會實作此介面的類別)。資料傳送是由 progresssocketData 事件推動的。AIR 會等候這些資料 progress 事件,直到傳送 completeclose 事件為止。

如果 isAsync 傳回 false,則 AIR 執行階段會假設可以立即取得所有資料。在這個案例中,執行階段會讀取 data provider 物件的 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 — 如果相對路徑使用 .. 捷徑跨過放置目標的一或多個上層目錄。
方法詳細資訊

    close

()方法
public function close():void

語言版本: ActionScript 3.0
執行階段版本: AIR 2

讀取所有資料之後,由AIR 執行階段呼叫。

呼叫 close() 之後,不會在 open() 傳回的物件參考上呼叫任何方法。data provider 物件可以放心刪除。

    open

()方法 
public function open():IDataInput

語言版本: ActionScript 3.0
執行階段版本: AIR 2

傳回 data provider 物件。

data provider 物件必須實作 IDataInput 介面,它會定義資料的讀取方法。如果 IFilePromise isAsync 屬性傳回 true,則 data provider 物件也必須實作 IEventDispatcher 介面。以下內建的類別可以做為資料提供者:

  • ByteArray (同步)
  • FileStream (同步或非同步)
  • Socket (非同步)
  • URLStream (非同步)

您也可以提供自訂類別的物件,用以實作必要的介面 (或者擴充其他可以實作介面的類別)。

傳回值
IDataInput — IDataInput - 一種實作 IDataInput 介面的物件。如果以非同步的方式提供資料,則傳回的物件也必須實作 IEventDispatcher 介面。

    reportError

()方法 
public function reportError(e:ErrorEvent):void

語言版本: ActionScript 3.0
執行階段版本: AIR 2

由 AIR 執行階段呼叫,將從 data provider 物件讀取資料時發生的錯誤,通知 IFilePromise 實作錯誤。

參數

e:ErrorEvent — 包含詳細錯誤資訊的錯誤事件。





[ X ]為什麼顯示英文?
「ActionScript 3.0 參考」的內容是以英文顯示

並非所有「ActionScript 3.0 參考」的內容都翻譯為所有語言。當語言元素未翻譯時,就會以英文顯示。例如,ga.controls.HelpBox 類別並沒有翻譯為任何語言。因此在參考的繁體中文版本中,ga.controls.HelpBox 類別就會以英文顯示。