·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3应用程序域ApplicationDomain及跨域策略

时间:2015-02-10 09:16酷播
[AS3]as3应用程序域ApplicationDomain及跨域策略

话说,在loadSWF的时候

var loader:Loader = new Loader();

loader.load(new URLRequest("child.swf"),??);

load方法,有两个参数,第一个是要加载对象的url;第二个就是将些swf里面的类定义放在哪个ApplicationDomain(应用程序域)里面

 

下面就来说说这个应用程序域

主要来说有三种方式(还有一种不常见)

(一)

将被加载的类定义放在父应用程序域的子域(父域里面的子域,默认加载方式)

var currentApplication:ApplicationDomain =ApplicationDomain .currentDomain;

var loaderContext:LoaderContext = new LoaderContext();

loaderContext.applicationDomain =  new ApplicationDomain (currentApplication);

loader.load(new URLRequest("child.swf"),loaderContext);

(二)

将被加载的类定义放在父应用程序域的里面,也就是两个合并(在一起了不过命名会有冲突)

var currentApplication:ApplicationDomain =ApplicationDomain .currentDomain;

var loaderContext:LoaderContext = new LoaderContext();

loaderContext.applicationDomain =  currentApplication

loader.load(new URLRequest("child.swf"),loaderContext);

(三)

将被加载的类定义放在作为父域的系统域下的新建子域(也是和父域同级别)

var loaderContext:LoaderContext = new LoaderContext();

loaderContext.applicationDomain =  new ApplicationDomain ();

loader.load(new URLRequest("child.swf"),loaderContext);

 

这些有什么用呢,下面是重点拉

当子swf被加载到父类使用的方法不同,我们访问子类的类定义的方式也不同

目前本人也只知道第一种,第三种和第二种的区别

 

第一种和第三种 获取类定义是loader.contentLoaderInfo.applicationDomian.getDefinition("类名");这个需要知道loader

第二种,直接可以ApplicationDomain.getDefinition("类名");这个不需要知道loader多方面

 

本人尚在研究,理解的不对还望指教

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器