下例使用 URLLoaderDataFormatExample 类显示在运行时加载的文件的数据格式和状态信息。这是使用以下步骤完成的:
-
类构造函数创建一个名为
loader
的 URLLoader 和一个名为 request
的 URLRequest 实例,后者为要加载的文件的位置和名称。
-
loader
对象被传递给 configureListeners()
方法,该方法可为每个受支持的 URLLoader 事件添加侦听器:
-
completeHandler()
:侦听 complete
事件,在成功加载 TextFile.txt 后调度该事件。
-
openHandler()
:侦听 open
事件,开始下载 TextFile.txt(至播放器)时调度该事件。
-
progressHandler()
:侦听 progress
事件,在下载操作过程中收到数据时调度该事件。
-
securityErrorHandler()
:侦听 securityError
事件,如果访问文本文件时使用了错误的本地回放安全设置,则调度该事件。
-
httpStatusHandler()
:侦听 httpStatusHandler
事件,在此示例不调度该事件,因为 TextFile.txt 是本地文件。
-
ioErrorHandler()
:侦听 ioError
事件,仅当文件出现严重问题(如文件丢失)时才发生该事件。
-
随后
request
对象被传递给 loader.load()
方法,该方法会使用 DisplayObject
对象将文本文件加载到内存中。
注意:
- 您需要编译 SWF 文件,将“本地回放安全性”设置为“只访问本地文件”。
- 该示例要求名为 TextFile.txt 的文件与 SWF 文件放在同一目录中。如果希望该示例识别二进制或 URL 编码数据文件,则需要用适当的数据格式来提供该文件,并将 TextFile.txt 更改为新文件的名称和位置。
package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.*;
public class URLLoaderDataFormatExample extends Sprite {
private var source:String = "TextFile.txt";
private var dataFormat:String = URLLoaderDataFormat.TEXT;
public function URLLoaderDataFormatExample () {
var loader:URLLoader = new URLLoader();
loader.dataFormat = dataFormat;
configureListeners(loader);
var request:URLRequest = new URLRequest(source);
try {
loader.load(request);
} catch (error:Error) {
trace("Error loading requested document: " + source);
}
}
private function configureListeners(dispatcher:URLLoader):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);
switch(loader.dataFormat) {
case URLLoaderDataFormat.TEXT :
trace("completeHandler (text): " + loader.data);
break;
case URLLoaderDataFormat.BINARY :
trace("completeHandler (binary): " + loader.data);
break;
case URLLoaderDataFormat.VARIABLES :
trace("completeHandler (variables): " + loader.data);
break;
}
}
private function httpStatusHandler(event:Event):void {
trace("httpStatusHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
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);
}
}
}