类加载与应用程序域

swf文件中的所有代码定义都存在于应用程序域中,可以使用应用程序域划分位于同一个安全域中的类,这允许同一个类存在多个定义,并且还允许子级重用父级定义。
1.加载到子域
类似于“继承”,子域可以直接获得父域所有的定义;反之,父域得不到子域的。
和继承关系不同的是,如果子域中有和父域同名的类,子域定义会被忽略而使用父域的定义
2.加载到同域
类似集合里的合并关系。被加载的swf文件里的所有类定义被合并到当前域中且
可以直接使用。和加载到子域相同,和当前域同名的域也会被忽略。
3.加载到新域
swf载入指定域之前,先要检查该域及其父域是否存在同名类,重复定义一概忽略。如果加载别人的陈天心,或者使用旧版本的主程序加载新版本的模块,为避免类名冲突就要加载到新域独立运行以使用自己的类。
var content:LoaderContext=new LoaderContext();
content.applicationDoamain=ApplicationDomain.currentDomain;

var swfurl1:String="element.swf";
var swfurl2:String="element1.swf";
configLoader(swfurl1);
configLoader(swfurl2);
function configLoader(url:String)
{
var context:LoaderContext=new LoaderContext();
//使用同域
// context.applicationDomain=ApplicationDomain.currentDomain;
//使用子域
context.applicationDomain=new ApplicationDomain(ApplicationDomain.currentDomain);
var loader:Loader=new Loader();
loader.load(new URLRequest(url),context);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);
}
function onComplete(e:Event):void
{
var className:Class=e.target.loader.contentLoaderInfo.applicationDomain.getDefinition("MCExample") as Class;
var mc:MovieClip=new className();
mc.x=Math.random()*400;
mc.y=Math.random()*300;
this.addChild(mc);
}
我的个人网站
[u]http://www.webdesign-cn.com[/u]
[u]http://www.levs.com[/u]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值