[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多方面
本人尚在研究,理解的不对还望指教
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例