FLASHCS3 URLLoader的介绍
URLLoader 类提供了一种单独的机制,用于在数据驱动的应用程序中加载文本和二进制数据
ActionScript 3.0 使用 URLLoader 和 URLVariables 类来加载外部数据。URLLoader 类以文本、二进制数据或 URL 编码变量的形式从 URL 下载数据。URLLoader 类用于下载文本文件、XML 或其它要用于数据驱动的动态 ActionScript 应用程序中的信息。URLLoader 类使用 ActionScript 3.0 高级事件处理模型,使用该模型可以侦听诸如 complete、httpStatus、ioError、open、progress 和 securityError 等事件。新事件处理模型在 ActionScript 2.0 的基础上大大改进了对 LoadVars.onData、LoadVars.onHTTPStatus 和 LoadVars.onLoad 事件处理函数的支持,
如果没有为 URLRequest.contentType 设置值,则以 application/x-www-form-urlencoded 的形式发送值
方法(以及 URLLoader 类的构造函数,可选)使用一个参数,即 URLLoader.load()request,该参数是一个 URLRequest 实例
例如,要将 XML 数据包上载到服务器端脚本,您可以使用下面的 ActionScript 3.0 代码:
var secondsUTC:Number = new Date().time;
var dataXML:XML =
<login>
<time>{secondsUTC}</time>
<username>Ernie</username>
<password>guru</password>
</login>;
var request:URLRequest = new URLRequest("http://www.yourdomain.com/login.cfm");
request.contentType = "text/xml";
request.data = dataXML.toXMLString();
request.method = URLRequestMethod.POST;
var loader:URLLoader = new URLLoader();
try
{
loader.load(request);
}
catch (error:ArgumentError)
{
trace("An ArgumentError has occurred.");
}
catch (error:SecurityError)
{
trace("A SecurityError has occurred.");
}
下面的片断创建 URLRequest 和 URLLoader 对象,用于加载外部文本文件 params.txt 的内容:
var request:URLRequest = new URLRequest("params.txt");
var loader:URLLoader = new URLLoader();
loader.load(request);
默认情况下,如果您未定义请求方法,Flash Player 将使用 HTTPGET方法加载内容。如果要使用POST方法发送数据,则需要使用静态常量URLRequestMethod.POST将request.method属性设置为POST,如下面的代码所示:
var request:URLRequest = new URLRequest("sendfeedback.cfm");
request.method = URLRequestMethod.POST;
在运行时加载的外部文档 params.txt 包含以下数据:
monthNames=January,February,March,April,May,June,July,August,September,October,November,December&dayNames=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
该文件包含两个参数,即monthNames和dayNames。每个参数包含一个逗号分隔列表,该列表被分解为字符串。可以使用String.split()方法将此列表拆分为数组。
加载数据后,将调度
Event.COMPLETE事件,现可以在 URLLoader 的data属性中使用外部文档的内容,如下面的代码所示:private function completeHandler(event:Event):void { var loader2:URLLoader = URLLoader(event.target); trace(loader2.data); }
如果从外部文本文件加载数值数据,则需要使用顶级函数(如
int()、uint()或Number())将这些值转换为数值。无需将远程文件的内容作为字符串加载和新建 URLVariables 对象,您可以将
属性设置为在 URLLoaderDataFormat 类中找到的静态属性之一。URLLoader.dataFormat属性的三个可能值如下:URLLoader.dataFormat
―URLLoaderDataFormat.BINARYURLLoader.data属性将包含 ByteArray 对象中存储的二进制数据。―URLLoaderDataFormat.TEXTURLLoader.data属性将包含 String 对象中的文本。―URLLoaderDataFormat.VARIABLESURLLoader.data属性将包含 URLVariables 对象中存储的 URL 编码的变量。下面的代码说明了通过将
属性设置为URLLoader.dataFormat,您可以自动将加载的数据分解为 URLVariables 对象:URLLoaderDataFormat.VARIABLESpackage { import flash.display.Sprite; import flash.events.*; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class URLLoaderDataFormatExample extends Sprite { public function URLLoaderDataFormatExample() { var request:URLRequest = new URLRequest("http://www.[yourdomain].com/params.txt"); var variables:URLLoader = new URLLoader(); variables.dataFormat = URLLoaderDataFormat.VARIABLES; variables.addEventListener(Event.COMPLETE, completeHandler); try { variables.load(request); } catch (error:Error) { trace("Unable to load URL: " + error); } } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace(loader.data.dayNames); } }
的默认值为URLLoader.dataFormat。URLLoaderDataFormat.TEXT
从外部文件加载 XML 与加载 URLVariables 相同。可以创建 URLRequest 和 URLLoader 实例,然后使用它们下载远程 XML 文档。文件完全下载后,调度
Event.COMPLETE事件,并将外部文件的内容转换为可使用 XML 方法和属性分析的 XML 实例。var myXML:XML = new XML(); var XML_URL:String = "http://www.example.com/Sample3.xml"; var myXMLURL:URLRequest = new URLRequest(XML_URL); var myLoader:URLLoader = new URLLoader(myXMLURL); myLoader.addEventListener("complete", xmlLoaded); function xmlLoaded(event:Event):void { myXML = XML(myLoader.data); trace("Data loaded."); }除了加载外部数据文件,还可以使用 URLVariables 类将变量发送到服务器端脚本并处理服务器的响应。这是非常有用的,例如,如果您正在编写游戏,想要将用户的得分发送到服务器以计算是否应添加到高分列表中,也可以将用户的登录信息发送到服务器以进行验证。服务器端脚本可以处理用户名和密码,向数据库验证用户名和密码,然后返回用户提供的凭据是否有效的确认。
下面的片断创建一个名为
variables的 URLVariables 对象,该对象创建称为name的新变量。接下来,创建一个 URLRequest 对象,该对象指定变量要发送到的服务器端脚本的 URL。然后,设置 URLRequest 对象的method属性,以便将变量作为 HTTPPOST请求发送。为了将 URLVariables 对象添加到 URL 请求,需要将 URLRequest 对象的data属性设置为早先创建的 URLVariables 对象。最后,创建 URLLoader 实例并调用方法,此方法用于启动该请求。URLLoader.load()var variables:URLVariables = new URLVariables("name=Franklin"); var request:URLRequest = new URLRequest(); request.url = "http://www.[yourdomain].com/greeting.cfm"; request.method = URLRequestMethod.POST; request.data = variables; var loader:URLLoader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES; loader.addEventListener(Event.COMPLETE, completeHandler); try { loader.load(request); } catch (error:Error) { trace("Unable to load URL"); } function completeHandler(event:Event):void { trace(event.target.data.welcomeMessage); }

浙公网安备 33010602011771号