套件 | flash.net |
類別 | public class URLLoader |
繼承 | URLLoader EventDispatcher Object |
子類別 | AVURLLoader |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
URLLoader 物件會先從 URL 下載所有資料,然後再讓應用程式中的程式碼使用此資料。它會送出有關下載進度的通知,而且您可以透過 bytesLoaded
和 bytesTotal
屬性以及傳送的事件監視進度。
當載入非常大的視訊檔 (如 FLV) 時,可能會發生記憶體不足錯誤。
當您在 Flash Player 中或不是在應用程式安全執行程序的 AIR 應用程式內容中使用此類別時,請考慮下列安全性模型:
- 位於具有檔案系統的本機安全執行程序中的 SWF 檔不可以從位於網路安全執行程序中的資源載入資料,或提供資料給此資源。
- 根據預設,呼叫的 SWF 檔與您所載入的 URL 必須位於完全相同的網域中。例如,www.adobe.com 的 SWF 檔只能從同樣在 www.adobe.com 中的來源載入資料。 若要從不同的網域載入資料,請在存放該資料的伺服器上放置一個 URL 原則檔案。
如需安全性詳細資訊,請參閱「Flash Player 開發人員中心」主題:安全性。
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
bytesLoaded : uint = 0
指出載入作業截至目前為止已載入的位元組數目。 | URLLoader | ||
bytesTotal : uint = 0
指出下載資料中的位元組總數。 | URLLoader | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
data : *
會從載入作業接收的資料。 | URLLoader | ||
dataFormat : String = "text"
控制要以文字 (URLLoaderDataFormat.TEXT)、原始二進位資料 (URLLoaderDataFormat.BINARY) 或 URL 編碼之變數 (URLLoaderDataFormat.VARIABLES) 的形式接收下載的資料。 | URLLoader |
方法 | 定義自 | ||
---|---|---|---|
URLLoader(request:URLRequest = null)
會建立 URLLoader 物件。 | URLLoader | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void [覆寫]
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | URLLoader | ||
會關閉進行中的載入作業。 | URLLoader | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
會從指定的 URL 傳送並載入資料。 | URLLoader | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
事件 | 摘要 | 定義自 | ||
---|---|---|---|---|
[廣播事件] 當 Flash Player 或 AIR 應用程式取得作業系統焦點並成為作用中時傳送。 | EventDispatcher | |||
在所有接收的資料都已解碼,並放置於 URLLoader 物件的 data 屬性之後傳送。 | URLLoader | |||
[廣播事件] 當 Flash Player 或 AIR 應用程式失去作業系統焦點並成為非作用中時傳送。 | EventDispatcher | |||
當 load() 方法呼叫嘗試透過 HTTP 存取資料,而且 Adobe AIR 能夠偵測並傳回要求的狀態碼時傳送。 | URLLoader | |||
當 URLLoader.load() 呼叫嘗試透過 HTTP 存取資料時傳送。 | URLLoader | |||
在 URLLoader.load() 的呼叫產生終止下載的嚴重錯誤時傳送。 | URLLoader | |||
在呼叫 URLLoader.load() 方法後開始進行下載作業時傳送。 | URLLoader | |||
在下載作業進行中收到資料時傳送。 | URLLoader | |||
當 URLLoader.load() 的呼叫嘗試從安全執行程序以外的伺服器載入資料時傳送。 | URLLoader |
bytesLoaded | 屬性 |
public var bytesLoaded:uint = 0
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指出載入作業截至目前為止已載入的位元組數目。
bytesTotal | 屬性 |
public var bytesTotal:uint = 0
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指出下載資料中的位元組總數。 當載入作業正在進行時,這項屬性會包含 0;當作業完成時,這項屬性會填入不同的值。 此外,遺失 Content-Length 檔頭將會造成 bytesTotal 變為非確定式。
data | 屬性 |
public var data:*
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會從載入作業接收的資料。 只有當載入作業完成時,才能填入這項屬性。 資料的格式會取決於 dataFormat
屬性的設定而定:
如果 dataFormat
屬性為 URLLoaderDataFormat.TEXT
,接收的資料就是包含載入檔文字的字串。
如果 dataFormat
屬性為 URLLoaderDataFormat.BINARY
,接收的資料就是包含原始二進位資料的 ByteArray 物件。
如果 dataFormat
屬性為 URLLoaderDataFormat.VARIABLES
,接收的資料就是包含 URL 編碼變數的 URLVariables 物件。
相關 API 元素
範例 ( 如何使用本範例 )
//params.txt is a local file that includes: firstName=Tom&lastName=Jones var lbl:TextField = new TextField(); var urlRequest:URLRequest = new URLRequest("params.txt"); var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete); urlLoader.load(urlRequest); function urlLoader_complete(evt:Event):void { lbl.text = urlLoader.data.lastName + "," + urlLoader.data.firstName; addChild(lbl); }
dataFormat | 屬性 |
public var dataFormat:String = "text"
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會控制要以文字 (URLLoaderDataFormat.TEXT
)、原始二進位資料 (URLLoaderDataFormat.BINARY
) 或 URL 編碼之變數 (URLLoaderDataFormat.VARIABLES
) 的形式接收下載的資料。
如果 dataFormat
屬性值為 URLLoaderDataFormat.TEXT
,接收的資料就是包含載入檔文字的字串。
如果 dataFormat
屬性值為 URLLoaderDataFormat.BINARY
,接收的資料就是包含原始二進位資料的 ByteArray 物件。
如果 dataFormat
屬性值為 URLLoaderDataFormat.VARIABLES
,接收的資料就是包含 URL 編碼變數的 URLVariables 物件。
預設值為 URLLoaderDataFormat.TEXT。
相關 API 元素
範例 ( 如何使用本範例 )
var PATH:String = "lorem.txt"; var urlRequest:URLRequest = new URLRequest(PATH); var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.TEXT; // default urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete); urlLoader.load(urlRequest); function urlLoader_complete(evt:Event):void { textArea.text = urlLoader.data; }
URLLoader | () | 建構函式 |
public function URLLoader(request:URLRequest = null)
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會建立 URLLoader 物件。
參數request:URLRequest (default = null ) — 指定要下載之 URL 的 URLRequest 物件。 如果省略此參數,就不會開始任何載入作業。 如果指定此參數,就會立即開始載入作業 (如需詳細資訊,請參閱 load 項目)。
|
相關 API 元素
addEventListener | () | 方法 |
override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。您可以在顯示清單上的所有節點,為特定類型的事件、階段與優先順序註冊事件偵聽程式。
當您成功註冊事件偵聽程式後,就不可以透過對 addEventListener()
的額外呼叫來變更其優先順序。 若要變更偵聽程式的優先順序,您必須先呼叫 removeListener()
。 然後,您就可以使用新的優先順序等級來重新註冊偵聽程式。
請記住,一旦您註冊了偵聽程式,對 addEventListener()
進行後續呼叫,若使用不同的 type
或 useCapture
值,將會導致建立個別的偵聽程式註冊程序。 例如,如果您先將 useCapture
設為 true
來註冊偵聽程式,則只會在捕捉階段進行偵聽。 如果您使用相同的偵聽程式物件,再次呼叫 addEventListener()
(但將 useCapture
設為 false
) 會得到兩個不同的偵聽程式: 一個會在捕捉階段進行偵聽,另一個則會在目標與反昇階段進行偵聽。
您無法單獨針對目標階段或反昇階段註冊事件偵聽程式。 由於反昇階段只適用於目標節點的祖系,因此這兩種階段必須一起進行註冊。
如果您不再需要事件偵聽程式,可以呼叫 removeEventListener()
來移除它,否則可能產生記憶體問題。 事件偵聽程式不會自動從記憶體中移除,因為只要傳送的物件存在,垃圾回收器就不會移除偵聽程式 (除非 useWeakReference
參數設定為 true
)。
複製 EventDispatcher 實體並不會將附加在該實體上的事件偵聽程式一併複製 (如果新建立的節點需要事件偵聽程式,則您必須在建立節點後再附加偵聽程式)。 然而,如果您移動了 EventDispatcher 實體,則附加的事件偵聽程式也會跟著移動。
若於此節點正在處理事件的同時將事件偵聽程式註冊到某個節點上,則事件偵聽程式不會在目前階段觸發,但會在事件流程的後續階段 (例如反昇階段) 中觸發。
如果您在節點正在處理事件的同時將事件偵聽程式從節點中移除,則事件偵聽程式還是會被目前的動作觸發。 一旦移除了事件偵聽程式,就無法再叫用它 (除非您為了日後的處理而再次註冊它)。
參數
type:String — 事件類型。
| |
listener:Function — 處理事件的偵聽程式函數。此函數必須接受 Event 物件並當做唯一的參數,而且必須傳回空值,如下列範例所示:
function(evt:Event):void 函數可以具有任何名稱。 | |
useCapture:Boolean (default = false ) —
判斷偵聽程式是否可在捕捉階段或目標與反昇階段運作。如果 useCapture 設為 true ,則偵聽程式只會在捕捉階段 (而不是在目標或反昇階段) 處理事件。如果 useCapture 為 false ,則偵聽程式只會在目標或反昇階段處理事件。若要在全部三個階段中偵聽事件,請呼叫 addEventListener 兩次,先將 useCapture 設為 true 進行第一次呼叫,再將 useCapture 設為 false 進行第二次呼叫。
| |
priority:int (default = 0 ) — 事件偵聽程式的優先順序等級。優先順序是由一個具有正負號的 32 位元整數所指定。 數字越大,代表優先順序越高。所有優先順序為 n 的偵聽程式都會比優先順序為 n -1 的偵聽程式優先處理。 如果有兩個以上的偵聽程式共用同一個優先順序,則會依據加入的先後次序來處理。預設的優先順序為 0。
| |
useWeakReference:Boolean (default = false ) — 判斷偵聽程式的參照為強或弱。強參照 (預設) 會避免偵聽程式被垃圾回收器從記憶體中移除, 弱參照則無法避免這個情況發生。 類別層級的成員函數不受記憶體回收限制,因此您可以將類別層級成員函數的 |
close | () | 方法 |
public function close():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會關閉進行中的載入作業。 任何進行中的載入作業都會立即終止。 如果目前並未串流任何 URL,就會擲回無效的串流錯誤。
load | () | 方法 |
public function load(request:URLRequest):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會從指定的 URL 傳送並載入資料。 根據 dataFormat
屬性設定的值而定,您能以文字、原始二進位資料或 URL 編碼之變數的形式接收此資料。 請注意,dataFormat
屬性的預設值為文字。 如果您想要將資料傳送至指定的 URL,可以在 URLRequest 物件中設定 data
屬性。
注意:如果下載的檔案包含非 ASCII 字元 (如在許多非英文語系中找到的字元),建議您將檔案儲存為 UTF-8 或 UTF-16 編碼,而不要儲存為類似 ASCII 的非 Unicode 格式。
位於具有檔案系統的本機安全執行程序中的 SWF 檔不可以從位於網路安全執行程序中的資源載入資料,或提供資料給此資源。
根據預設,呼叫的 SWF 檔與您所載入的 URL 必須位於完全相同的網域中。例如,www.adobe.com 的 SWF 檔只能從同樣在 www.adobe.com 中的來源載入資料。 若要從不同的網域載入資料,請在存放該資料的伺服器上放置一個 URL 原則檔案。
您不可以連接到常用的保留連接埠。完整的封鎖連接埠清單,請參閱在「ActionScript 3.0 開發人員指南」中的「限制網路 API」。
在 Flash Player 10 和更新版本中,如果您使用包含上載 (由 POST 主體中 "content-disposition" 檔頭的 "filename" 參數指示) 的多部分 Content-Type (例如 "multipart/form-data"),POST 作業會受限於上載所套用的安全性規則:
- 必須執行 POST 作業,以回應使用者啟動的動作 (例如按下滑鼠或按下按鍵)。
- 如果 POST 作業會跨越網域 (POST 目標與傳送 POST 要求的 SWF 檔不在同一部伺服器上),目標伺服器必須提供允許跨網域存取的 URL 原則。
此外,多部分的 Content-Type 語法必須有效 (符合 RFC2046 標準)。如果語法無效,POST 作業會受限於上載所套用的安全性規則。
如需安全性詳細資訊,請參閱「Flash Player 開發人員中心」主題:安全性。
參數
request:URLRequest — 指定要下載之 URL 的 URLRequest 物件。
|
事件
complete: — 會在順利載入資料之後傳送。
| |
httpStatus: — 如果是透過 HTTP 存取,而且目前的 Flash Player 環境支援取得狀態碼,則除了所有的 complete 或 error 事件以外,您還可以收到這些事件。
| |
ioError: — 無法完成載入作業。
| |
progress: — 在下載作業進行中收到資料時傳送。
| |
securityError: — 載入作業嘗試從呼叫者之安全執行程序以外的伺服器擷取資料。 您可以使用伺服器上的原則檔來解決此問題。
| |
securityError: — 載入作業嘗試載入 SWZ 檔 (Adobe 平台組件),但憑證無效或摘要與組件不符。
| |
open: — 在載入作業開始時傳送。
| |
httpResponseStatus: — 當 load() 方法呼叫嘗試透過 HTTP 存取資料,而且 Adobe AIR 能夠偵測並傳回要求的狀態碼時傳送。
|
擲回值
ArgumentError — URLRequest.requestHeader 物件可能不會包含特定禁止的 HTTP 要求檔頭。 如需詳細資訊,請參閱 URLRequestHeader 類別的說明。
| |
MemoryError — 這項錯誤可能會因為下列原因而發生:1) Flash Player 或 AIR 無法將 URLRequest.data 參數從 UTF8 轉換成 MBCS。如果傳遞給 load() 的 URLRequest 物件設定為執行 GET 作業,而且 System.useCodePage 設定為 true ,就會發生這項錯誤。2) Flash Player 或 AIR 無法分配 POST 資料的記憶體。如果傳遞給 load 的 URLRequest 物件設定為執行 POST 作業,就會發生這項錯誤。
| |
SecurityError — 本機不受信任的 檔可能無法與網際網路進行通訊。 您可以透過將此 檔重新分類為「具有網路連線的本機」或受信任,解決此問題。
| |
SecurityError — 您正嘗試連線到常用的保留連接埠。完整的封鎖連接埠清單,請參閱在「ActionScript 3.0 開發人員指南」中的「限制網路 API」。
| |
TypeError — 要求參數的值或傳遞之 URLRequest 物件的 URLRequest.url 屬性都為 null 。
|
相關 API 元素
範例 ( 如何使用本範例 )
範例會建立 URLRequest
物件以識別 XML 檔的位置,在這個範例中,該檔案與 SWF 檔在相同目錄中。 檔案於 try...catch
區塊中載入,以捕捉可能發生的任何錯誤 (這裡我們捕捉到 SecurityError
錯誤)。 如果發生 IO_ERROR
事件,會叫用 errorHandler()
方法,由它在 xmlTextField
文字欄位中寫入錯誤訊息。 等擷取到 XML 檔的資料,並放在 loader
URLLoader 物件的 data 屬性中之後,就傳送 Event.COMPLETE
事件,並叫用 loaderCompleteHandler()
方法。
在 loaderCompleteHandler()
方法中,try...catch
區塊會用來捕捉於載入的資料從檔案轉換成 XML 物件過程中可能發生的任何剖析錯誤。 readNodes()
方法接著遞迴處理 XML 文件的節點中的所有元素,並將所有元素的第一個特質清單附加到 xmlTextField
文字欄位。
package { import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.xml.*; import flash.events.IOErrorEvent; public class URLLoader_loadExample extends Sprite { private var xmlTextField:TextField = new TextField(); private var externalXML:XML; private var loader:URLLoader; public function URLLoader_loadExample() { var request:URLRequest = new URLRequest("xmlFile.xml"); loader = new URLLoader(); try { loader.load(request); } catch (error:SecurityError) { trace("A SecurityError has occurred."); } loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); xmlTextField.x = 10; xmlTextField.y = 10; xmlTextField.background = true; xmlTextField.autoSize = TextFieldAutoSize.LEFT; addChild(xmlTextField); } private function loaderCompleteHandler(event:Event):void { try { externalXML = new XML(loader.data); readNodes(externalXML); } catch (e:TypeError) { trace("Could not parse the XML file."); } } private function readNodes(node:XML):void { for each (var element:XML in node.elements()) { xmlTextField.appendText(element.attributes()[0] + "\n"); readNodes(element); } } private function errorHandler(e:IOErrorEvent):void { xmlTextField.text = "Had problem loading the XML File."; } } }
complete | 事件 |
flash.events.Event
屬性 Event.type =
flash.events.Event.COMPLETE
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
在所有接收的資料都已解碼,並放置於 URLLoader 物件的 data 屬性之後傳送。一旦傳送這個事件,就可以存取接收的資料。
Event.COMPLETE
常數會定義 complete
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
target | 已完成載入的網路物件。 |
相關 API 元素
httpResponseStatus | 事件 |
flash.events.HTTPStatusEvent
屬性 HTTPStatusEvent.type =
flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUS
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, AIR 1.0, Flash Lite 4 |
當 load() 方法呼叫嘗試透過 HTTP 存取資料,而且 Adobe AIR 能夠偵測並傳回要求的狀態碼時傳送。
與httpStatus
事件不同,httpResponseStatus
事件在傳送任何回應資料之前會行先傳送。此外,httpResponseStatus
事件也包含 responseHeaders
和 responseURL
屬性的值 (尚未針對 httpStatus
事件而定義)。請注意,httpResponseStatus
(如果有的話) 將在 (另外) 任何 complete
或 error
事件之前傳送。
HTTPStatusEvent.HTTP_RESPONSE_STATUS
常數會定義 httpResponseStatus
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
responseURL | 傳回回應的 URL。 |
responseHeaders | 回應所傳回 (做為 URLRequestHeader 物件的陣列) 的回應檔頭。 |
status | 伺服器傳回的 HTTP 狀態碼。 |
redirected | 回應是否為重新導向的結果。 |
target | 接收 HTTP 狀態碼的網路物件。 |
相關 API 元素
httpStatus | 事件 |
flash.events.HTTPStatusEvent
屬性 HTTPStatusEvent.type =
flash.events.HTTPStatusEvent.HTTP_STATUS
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
當 URLLoader.load() 呼叫嘗試透過 HTTP 存取資料時傳送。針對 Flash Player 中執行的內容,只有在目前的 Flash Player 環境能夠偵測並傳回要求的狀態碼時,才會傳送這個事件。(某些瀏覽器環境可能無法提供這項資訊)。 請注意,httpStatus
事件 (如果有的話) 會在 (另外) 任何 complete
或 error
事件之前傳送。
HTTPStatusEvent.HTTP_STATUS
常數會定義 httpStatus
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
status | 伺服器傳回的 HTTP 狀態碼。 |
target | 接收 HTTP 狀態碼的網路物件。 |
相關 API 元素
ioError | 事件 |
flash.events.IOErrorEvent
屬性 IOErrorEvent.type =
flash.events.IOErrorEvent.IO_ERROR
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
在 URLLoader.load() 的呼叫產生終止下載的嚴重錯誤時傳送。
定義ioError
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
errorID | 與特定錯誤相關聯的參考號碼 (僅限 AIR)。 |
target | 遭遇輸入/輸出錯誤的網路物件。 |
text | 要顯示為錯誤訊息的文字。 |
相關 API 元素
open | 事件 |
flash.events.Event
屬性 Event.type =
flash.events.Event.OPEN
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
會在呼叫 URLLoader.load()
方法後開始進行下載作業時傳送。
Event.OPEN
常數會定義 open
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
target | 已開啟連線的網路物件。 |
相關 API 元素
progress | 事件 |
flash.events.ProgressEvent
屬性 ProgressEvent.type =
flash.events.ProgressEvent.PROGRESS
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
在下載作業進行中收到資料時傳送。
請注意,使用 URLLoader 物件時,要等到完全接收資料之後,才能存取資料。 因此,進度事件只能做為目前下載進度的通知。 若要在完整下載前存取資料,請使用 URLStream 物件。
定義progress
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
bytesLoaded | 在偵聽程式處理事件時,載入的項目或位元組數目。 |
bytesTotal | 如果載入程序成功時,最終將載入的項目或位元組總數。 |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
target | 回報進度的物件。 |
相關 API 元素
securityError | 事件 |
flash.events.SecurityErrorEvent
屬性 SecurityErrorEvent.type =
flash.events.SecurityErrorEvent.SECURITY_ERROR
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
當 URLLoader.load() 的呼叫嘗試從安全執行程序以外的伺服器載入資料時傳送。也會在 URLLoader.load()
呼叫嘗試載入 SWZ 檔且憑證無效或摘要字串與組件不符時傳送。
SecurityErrorEvent.SECURITY_ERROR
常數會定義 securityError
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
target | 回報安全性錯誤的網路物件。 |
text | 要顯示為錯誤訊息的文字。 |
相關 API 元素
注意:若要執行此範例,請將名為 urlLoaderExample.txt 的檔案與 SWF 檔放置於相同的目錄中。 該檔案應該僅包含下列文字行:answer=42&question=unknown
此範例程式碼會執行下列動作:
- 建構函數會建立 URLLoader 實體
loader
和 URLRequest 實體request
,其中包含要載入之檔案的位置與檔名。 - 將
loader
物件傳遞給configureListeners()
方法後,再將偵聽程式加入每一個支援的 URLLoader 事件。 - 然後將
request
物件傳遞給loader.load()
方法,以便載入文字檔。 - 當 URLLoader 完成文字檔的載入作業時,就會引發
Event.COMPLETE event
,並觸發completeHandler()
方法。completeHandler()
方法會使用已載入檔案的文字來建立 URLVariables 物件。 URLVariables 物件會將已經過 URL 編碼之名稱/值的配對轉換成 ActionScript 屬性,使得載入的資料更容易操控。
package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLLoaderExample extends Sprite { private loader:URLoader; public function URLLoaderExample() { loader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest("urlLoaderExample.txt"); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); var vars:URLVariables = new URLVariables(loader.data); trace("The answer is " + vars.answer); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
Tue Jun 12 2018, 03:47 PM Z