包 | 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 ) — 一个 URLRequest 对象,指定要下载的 URL。如果省略该参数,则不开始加载操作。如果已指定参数,则立即开始加载操作(有关详细信息,请参阅 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()
。然后,可以使用新的优先级再次注册该侦听器。
请记住,注册该侦听器后,如果继续调用具有不同 type
或 useCapture
值的 addEventListener()
,则会创建单独的侦听器注册。例如,如果首先注册 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 发送和加载数据。可以以文本、原始二进制数据或 URL 编码变量格式接收数据,这取决于为 dataFormat
属性所设置的值。请注意 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”参数表示)的 multipart Content-Type(例如“multipart/form-data”),则 POST 操作会受应用于上载的安全规则的约束:
- 必须执行 POST 操作以响应用户启动的操作(如鼠标单击或按键)。
- 如果 POST 操作是跨域的(POST 目标与发送 POST 请求的 SWF 文件不在同一台服务器上),则目标服务器必须提供一个允许跨域访问的 URL 策略文件。
另外,对于任何 multipart Content-Type,语法必须有效(根据 RFC2046 标准)。如果语法无效,则 POST 操作受应用于上载的安全规则约束。
有关安全性的详细信息,请参阅 Flash Player 开发人员中心主题:安全性。
参数
request:URLRequest — 一个 URLRequest 对象,指定要下载的 URL。
|
事件
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 — 本地不受信任的 文件可能无法与 Internet 进行通信。可通过将此 文件重新分类为只能与远程内容交互或受信任来解决此问题。
| |
SecurityError — 正在尝试连接到常用的保留端口。有关已阻止的端口的完整列表,请参阅《ActionScript 3.0 开发人员指南》中的“限制网络 API”。
| |
TypeError — 所传递的请求参数值或 URLRequest 对象的 URLRequest.url 属性为 null 。
|
相关 API 元素
示例 ( 如何使用本示例 )
将创建一个用于指定 XML 文件位置的 URLRequest
对象,就本示例而言,该文件与 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
,这些属性未定义)。请注意,在发送任何 complete
或 error
事件之前还将发送 httpResponseStatus
(如果有)。
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 环境能够检测并返回请求的状态代码时,才能调度此事件。(有些浏览器环境可能无法提供此信息。)请注意:在发送任何 complete
或 error
事件之前还将发送 httpStatus
事件(如果有)。
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 对象,在完全接收数据前无法访问该数据。因此,该 progress 事件仅用作有关下载进展的通知。要在完整下载前访问该数据,请使用 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
该示例代码执行以下操作:
- 该构造函数创建名为
loader
的 URLLoader 实例和名为request
URLRequest 的实例,后者包含要加载的文件的位置和名称。 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, 11:04 AM Z