AS3.0 LoaderContext

网络上有关AS3跨域读取swf、图片报错案例有很多种了,面对总是报“checkPolicyFile”错误信息,在服务器上设置了crossdomain.xml文件都没用的,让很多闪友头痛很久,其实我们通常用LoaderContext类来解决,请看以下代码:
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类;
 
LoaderContext究竟是何方神圣?今天我们就来深讨一下:
LoaderContext属于flash.system。

使用 Loader.load() 方法加载 SWF 文件时,需要做出两个决定:应将所加载的 SWF 文件放置到哪个安全域中,以及应放置到该安全域中的哪个应用程序域中。

 

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

 

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

 

LoaderContext含有3个公共属性:

applicationDomain : ApplicationDomain = null

指定用于 Loader.load() 或 Loader.loadBytes() 方法的应用程序域。
 
checkPolicyFile :  Boolean = false
指定 Flash Player 是否应在开始加载对象本身之前,尝试从所加载对象的服务器上下载跨域策略文件。
 
securityDomain :  SecurityDomain = null
指定用于 Loader.load() 操作的安全域
 
LoaderContext(checkPolicyFile: Boolean = false, applicationDomain: ApplicationDomain = null, securityDomain: SecurityDomain = null)
创建带有指定设置的新 LoaderContext 对象。
 
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类进行一些认识,诸位读者就自己研究吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值