Flash CS3 文档 |
|||
| ActionScript 3.0 编程 > 显示编程 > 动态加载显示内容 > 指定加载上下文 | |||
通过 Loader 类的 load() 或 loadBytes() 方法将外部文件加载到 Flash Player 中时,可以选择性地指定 context 参数。此参数是一个 LoaderContext 对象。
LoaderContext 类包括三个属性,用于定义如何使用加载的内容的上下文:
checkPolicyFile:仅当加载图像文件(不是 SWF 文件)时才会使用此属性。如果将此属性设置为 true,Loader 将检查跨域策略文件的原始服务器(请参阅Web 站点控制(跨域策略文件))。只有内容的来源域不是包含 Loader 对象的 SWF 文件所在的域时才需要此属性。如果服务器授予 Loader 域权限,Loader 域中 SWF 文件的 ActionScript 就可以访问加载图像中的数据;换句话说,可以使用 BitmapData.draw() 命令访问加载的图像中的数据。 请注意,来自 Loader 对象所在域以外的其它域的 SWF 文件可以通过调用 Security.allowDomain() 来允许特定的域。
securityDomain:仅当加载 SWF 文件(不是图像)时才会使用此属性。如果 SWF 文件所在的域与包含 Loader 对象的文件所在的域不同,则指定此属性。指定此选项时,Flash Player 将检查跨域策略文件是否存在,如果存在,来自跨策略文件中允许的域的 SWF 文件可以对加载的 SWF 内容执行跨脚本操作。可以将 flash.system.SecurityDomain.currentDomain 指定为此参数。 applicationDomain:仅当加载使用 ActionScript 3.0 编写的 SWF 文件(不是图像或使用 ActionScript 1.0 或 2.0 编写的 SWF 文件)时才会使用此属性。加载文件时,通过将 applicationDomain 参数设置为 flash.system.ApplicationDomain.currentDomain,可以指定将该文件包括在与 Loader 对象相同的应用程序域中。通过将加载的 SWF 文件放在同一个应用程序域中,可以直接访问它的类。如果要加载的 SWF 文件中包含嵌入的媒体,这会很有帮助,您可以通过其关联的类名访问嵌入的媒体。有关详细信息,请参阅使用 ApplicationDomain 类。下面的示例用于在加载来自另一个域的位图时检查跨域策略文件:
var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;
var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/photo11.jpg");
var ldr:Loader = new Loader();
ldr.load(urlReq, context);
下面的示例用于从另一域加载 SWF 时检查跨域策略文件,以便将该文件放在与 Loader 对象相同的安全沙箱中。此外,该代码还将加载的 SWF 文件中的类添加到与 Loader 对象的类相同的应用程序域中:
var context:LoaderContext = new LoaderContext();
context.securityDomain = SecurityDomain.currentDomain;
context.applicationDomain = ApplicationDomain.currentDomain;
var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/library.swf");
var ldr:Loader = new Loader();
ldr.load(urlReq, context);
有关详细信息,请参阅《ActionScript 3.0 语言和组件参考》中的 LoaderContext 类。
Flash CS3
当前页: http://livedocs.adobe.com/flash/9.0_cn/main/00000173.html