import flash.display.Loader;
import flash.net.URLRequest;
import flash.system.LoaderContext;
var aPolce:LoaderContext = new LoaderContext(true);
var loader:Loader = new Loader();
loader.load(new URLRequest( http://xxxxxxxx/xxxx.xxx),aPolce);
//需要在原来的调用基础增加LoaderContext类;
使用 Loader.load()
方法加载 SWF 文件时,需要做出两个决定:应将所加载的 SWF 文件放置到哪个安全域中,以及应放置到该安全域中的哪个应用程序域中。
而使用 Loader.loadBytes()
方法加载 SWF 文件时,只要选择应用程序域,但不必指定安全域,这是因为Loader.loadBytes()
始终将其加载的(子swf) SWF 文件放置到执行加载(父:swf)的 SWF 文件的安全域。
如果是加载图像(JPEG、GIF 或 PNG)而不是 SWF 文件,则无需指定安全域或应用程序域,这是因为这些概念只对 SWF 有意义。 此时您只需做出一个决定:是否需要以编程方式访问所加载图像的像素。
LoaderContext含有3个公共属性:
applicationDomain : ApplicationDomain = null
applicationDomain | 属性 |
指定用于 Loader.load()
或 Loader.loadBytes()
方法的应用程序域。 只应在加载使用 ActionScript 3.0 编写的 SWF 文件(不是图像或使用 ActionScript 1.0 或 ActionScript 2.0 编写的 SWF 文件)时才使用此属性。
checkPolicyFile | 属性 | |
指定 Flash Player 是否应在开始加载对象本身之前,尝试从所加载对象的服务器上下载跨域策略文件。 此标志适用于 Loader.load()
方法,但不适用于 Loader.loadBytes()
方法。
如果从执行调用的 SWF 文件(父swf)所在的域之外加载图像(JPEG、GIF 或 PNG),并且需要从 ActionScript 访问该图像的内容,请将此标志设置为 true
。 访问图像内容的示例包括引用 Loader.content
属性以获得 Bitmap 对象,以及调用 BitmapData.draw()
方法以获得所加载图像像素的副本。 如果在加载时没有指定 checkPolicyFile
,就会得到一个 SecurityError
异常,这是因为没有
下载所需的策略文件。
securityDomain | 属性 | |
指定用于 Loader.load()
操作的安全域。 只应在加载 SWF 文件(图像文件不需要)时使用此属性。只有在被加载的 SWF 文件与执行加载的 SWF 文件可能来自不同的域(不同的服务器)时,选择安全域才有意义。 在从其它域加载 SWF 文件时,有两种方法:
1,可以允许将被加载的 SWF 文件放置到其“自然的”安全域中,此安全域与执行加载的 SWF 文件的安全域不同;这是默认设置。
2,另一种选择是通过将 myLoaderContext.securityDomain
设置为与 SecurityDomain.currentDomain
相同,指出希望将被加载的 SWF 文件放置到执行加载的 SWF 文件所在的安全域中。 这称作导入加载,就安全性而言,它等同于将被加载的 SWF 文件复制到本地服务器,然后从该服务器加载它。 此时,被加载的(子swf)SWF 文件的服务器必须具有一个策略文件,并且该策略文件必须信任执行加载的 SWF 文件的(父)域。另外,只能在传递在LoaderContext.securityDomain设定的
安全域。 如果试图传递任何其它的安全域,则会引发SecurityError
异常。
我们简单认识了LoaderContext的一些作用,但是LoaderContext是为了Loader类服务的,所以还必须对loader类进行一些认识,诸位读者就自己研究吧~