flash.system
public class LoaderContext
继承LoaderContext Inheritance Object

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

LoaderContext 类提供多种选项,以使用 Loader 类来加载 SWF 文件和其它媒体。 LoaderContext 类用作 Loader 类的 load()loadBytes() 方法的 context 参数。

使用 Loader.load() 方法加载 SWF 文件时,需要做出两个决定:应将所加载的 SWF 文件放置到哪个安全域中,以及应放置到该安全域中的哪个应用程序域中? 有关这些选择的更多详细信息,请参阅 applicationDomainsecurityDomain 属性。

使用 Loader.loadBytes() 方法加载 SWF 文件时,与使用 Loader.load() 时一样,也要选择应用程序域,但不必指定安全域,这是因为 Loader.loadBytes() 始终将其加载的 SWF 文件放置到执行加载的 SWF 文件的安全域。

如果是加载图像(JPEG、GIF 或 PNG)而不是 SWF 文件,则无需指定安全域或应用程序域,这是因为这些概念只对 SWF 有意义。 此时您只需做出一个决定:是否需要以编程方式访问所加载图像的像素? 如果需要,请参阅 checkPolicyFile 属性。

另请参见

flash.display.Loader.load()
flash.display.Loader.loadBytes()
flash.system.ApplicationDomain
flash.system.LoaderContext.applicationDomain
flash.system.LoaderContext.checkPolicyFile
flash.system.LoaderContext.securityDomain
flash.system.SecurityDomain
指定加载上下文



公共 属性
 属性定义方
  applicationDomain : ApplicationDomain = null
指定用于 Loader.load() 或 Loader.loadBytes() 方法的应用程序域。
LoaderContext
  checkPolicyFile : Boolean = false
指定 Flash Player 是否应在开始加载对象本身之前,尝试从所加载对象的服务器上下载跨域策略文件。
LoaderContext
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
 Inheritedprototype : Object
[static] 对类或函数对象的原型对象的引用。
Object
  securityDomain : SecurityDomain = null
指定用于 Loader.load() 操作的安全域。
LoaderContext
公共 方法
 方法定义方
  
LoaderContext(checkPolicyFile:Boolean = false, applicationDomain:ApplicationDomain = null, securityDomain:SecurityDomain = null)
创建带有指定设置的新 LoaderContext 对象。
LoaderContext
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
属性详细信息
applicationDomain属性
public var applicationDomain:ApplicationDomain = null

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指定用于 Loader.load()Loader.loadBytes() 方法的应用程序域。 只应在加载使用 ActionScript 3.0 编写的 SWF 文件(不是图像或使用 ActionScript 1.0 或 ActionScript 2.0 编写的 SWF 文件)时才使用此属性。

每个安全域被分成一个或多个由 ApplicationDomain 对象表示的应用程序域。 应用程序域并不是用于安全目的;它们用于管理 ActionScript 代码的协作单元。 如果是从其它域加载 SWF 文件,并允许将它放置到另外一个安全域中,则您将无法控制所加载的 SWF 文件被放置到哪个应用程序域中;即使您指定应选择某个应用程序域,也会忽略。 但是,如果是将 SWF 文件加载到您自己的安全域中(因为此 SWF 文件来自您自己的域,或者您正在将它导入到您的安全域中),您就可以控制为所加载的 SWF 文件选择哪个应用程序域。

LoaderContext.applicationDomain 中,您只可以传递您自己的安全域中的应用程序域。 如果试图传递任何其它安全域中的应用程序域,则会引发 SecurityError 异常。

有四种 ApplicationDomain 属性可供您选择使用:

加载完成后,为调用 ApplicationDomain.getDefinition(),任一方(加载方或被加载方)都可能需要找到它自己的 ApplicationDomain 或另一方的 ApplicationDomain。 任一方都可以通过使用 ApplicationDomain.currentDomain 来检索对它自己的应用程序域的引用。 执行加载的 SWF 文件可以通过 Loader.contentLoaderInfo.applicationDomain 来检索对被加载的 SWF 文件的 ApplicationDomain 的引用。 如果被加载的 SWF 文件知道自己的加载方式,则它可以找到执行加载的 SWF 文件的 ApplicationDomain 对象。 例如,如果子级是以默认方式被加载的,则它可以通过使用 ApplicationDomain.currentDomain.parentDomain 找到执行加载的 SWF 文件的应用程序域。

有关详细信息,请参阅《ActionScript 3.0 编程》中“客户端系统环境”一章的“ApplicationDomain 类”一节。

另请参见

checkPolicyFile属性 
public var checkPolicyFile:Boolean = false

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指定 Flash Player 是否应在开始加载对象本身之前,尝试从所加载对象的服务器上下载跨域策略文件。 此标志适用于 Loader.load() 方法,但不适用于 Loader.loadBytes() 方法。

如果您从执行调用的 SWF 文件所在的域之外加载图像(JPEG、GIF 或 PNG),并且您预计将需要从 ActionScript 访问该图像的内容,请将此标志设置为 true。 访问图像内容的示例包括引用 Loader.content 属性以获得 Bitmap 对象,以及调用 BitmapData.draw() 方法以获得所加载图像像素的副本。 如果您在加载时没有指定 checkPolicyFile 就尝试执行这些操作之一,您可能会得到一个 SecurityError 异常,这是因为尚未下载所需的策略文件。

LoaderContext.checkPolicyFile 被设置为 true 的情况下调用 Loader.load() 方法时,Flash Player 在成功下载相关的跨域策略文件后或发现不存在这样的策略文件后才开始下载 URLRequest.url 中的指定对象。 Flash Player 首先考虑已经下载的策略文件,然后尝试下载在对 Security.loadPolicyFile() 方法的调用中指定的任何待下载策略文件,最后尝试从与 URLRequest.url 对应的默认位置(即 URLRequest.url 所在的服务器上的 /crossdomain.xml)下载策略文件。 在所有情况下,Flash Player 都要求给定的策略文件存在于其服务器上,要求它利用策略文件的位置提供对位于 URLRequest.url 的对象的访问,并要求它利用一个或多个 <allow-access-from> 标签允许执行调用的 SWF 文件的域进行访问。

如果您将 checkPolicyFile 设置为 true,Flash Player 会等待至策略文件下载完成后再开始执行您在 Loader.load() 方法中指定的主下载。 因此,只要您需要的策略文件存在,一旦您收到来自 Loader 对象的 contentLoaderInfo 属性的任何 ProgressEvent.PROGRESSEvent.COMPLETE 事件,就说明该策略文件下载已完成,您就可以安全地开始执行需要该策略文件的操作。

如果您将 checkPolicyFile 设置为 true,并且未找到相关的策略文件,则除非您尝试执行的操作引发了 SecurityError 异常,否则您将不会收到任何错误指示。 但是,一旦 LoaderInfo 对象调度 ProgressEvent.PROGRESSEvent.COMPLETE 事件,您就可以通过检查 LoaderInfo.childAllowsParent 属性的值来测试是否找到了相关的策略文件。

如果不需要对正在加载的图像进行像素级的访问,则不应将 checkPolicyFile 属性设置为 true。 在这种情况下不必再检查是否存在策略文件,因为这样会延迟下载的开始时间,并且可能会不必要地占用网络带宽。

如果是使用 Loader.load() 方法下载 SWF 文件,也尽量不要将 checkPolicyFile 设置为 true。 这是因为 SWF 到 SWF 的权限不是由策略文件控制的,而是由 Security.allowDomain() 方法控制的,因此在加载 SWF 文件时 checkPolicyFile 不起任何作用。 在这种情况下不必再检查是否存在策略文件,因为这样会延迟 SWF 文件的下载,并且可能会不必要地占用网络带宽 (Flash Player 无法判断您的主下载将是 SWF 文件还是图像,这是因为策略文件下载先于主下载进行)。

如果是从可能使用服务器端 HTTP 重定向的 URL 下载对象,则使用 checkPolicyFile 时要小心。 Flash Player 总是会尝试检索与您在 URLRequest.url 中指定的初始 URL 对应的策略文件。 如果由于 HTTP 重定向而导致最终对象来自其它 URL,则最初下载的策略文件可能不适用于该对象的最终 URL,而最终 URL 对于安全性决策非常重要。 如果发现处于这种情况,可以在收到 ProgressEvent.PROGRESSEvent.COMPLETE 事件后检查 LoaderInfo.url 的值,它会告诉您该对象的最终 URL。 接着,用一个基于该对象的最终 URL 的策略文件 URL 调用 Security.loadPolicyFile() 方法。 然后轮询 LoaderInfo.childAllowsParent 的值,直到它变为 true

另请参见

securityDomain属性 
public var securityDomain:SecurityDomain = null

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

指定用于 Loader.load() 操作的安全域。 只应在加载 SWF 文件(而不是图像)时使用此属性。

只有在被加载的 SWF 文件与执行加载的 SWF 文件可能来自不同的域(不同的服务器)时,选择安全域才有意义。 从您自己的域加载 SWF 文件时,始终会将它放置到您的安全域中。 但是,在从其它域加载 SWF 文件时,您有两种选择: 您可以允许将被加载的 SWF 文件放置到其“自然的”安全域中,此安全域与执行加载的 SWF 文件的安全域不同;这是默认设置。 另一种选择是通过将 myLoaderContext.securityDomain 设置为与 SecurityDomain.currentDomain 相同,指出您希望将被加载的 SWF 文件放置到执行加载的 SWF 文件所在的安全域中。 这称作导入加载,就安全性而言,它等同于将被加载的 SWF 文件复制到您自己的服务器,然后从该服务器加载它。 为使导入加载成功完成,被加载的 SWF 文件的服务器必须具有一个策略文件,并且该策略文件必须信任执行加载的 SWF 文件的域。

您只能在 LoaderContext.securityDomain 中传递您自己的安全域。 如果试图传递任何其它安全域,则会引发 SecurityError 异常。

有关详细信息,请参阅《ActionScript 3.0 编程》中的“安全性”一章。

另请参见

构造函数详细信息
LoaderContext()构造函数
public function LoaderContext(checkPolicyFile:Boolean = false, applicationDomain:ApplicationDomain = null, securityDomain:SecurityDomain = null)

语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

创建带有指定设置的新 LoaderContext 对象。 有关这些设置的完整详细信息,请参阅对该类属性的说明。

参数
checkPolicyFile:Boolean (default = false) — 指定 Flash Player 在加载对象前是否应检查跨域策略文件是否存在。
 
applicationDomain:ApplicationDomain (default = null) — 指定要用于 Loader 对象的 ApplicationDomain 对象。
 
securityDomain:SecurityDomain (default = null) — 指定要用于 Loader 对象的 SecurityDomain 对象。

另请参见





 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/flash/system/LoaderContext.html