[AS3]ApplicationDomain的误解,安全沙箱有关内容(2)
1. | //这里的ClassDefinitionName是我们在被加载的swf中的类定义的名称 |
2. | var AClass:Class = loader.contentLoaderInfo.applicationDomain. getDefinition(ClassDefinitionName) as Class; |
3. | new AClass(); |
下面就说说这三个不同的域
1、当前域
ApplicationDomain 类的用途是存储 ActionScript 3.0 定义表,在当前域中加载类定义后,如果当前域中已经有了同名的类定义,那么新加载的类定义不会覆盖原来的(这一点要注意),原来没有的会添加到as3的定义表中。
这可让您将新的类定义添加到应用程序的当前一组类定义中。这可用于主应用程序的运行时共享库。加载的 SWF 被视为远程共享库 (RSL)。使用此方法可以在应用程序启动之前使用预加载器加载 RSL。
2、新应用程序域
在系统域中新建一个应用程序域,他和当前域是平级的。这样我们可以对相同名称的类,可以有两个完全不同的定义。
此方法的一个用处是使旧版应用程序能够动态加载相同应用程序的更新版本,而不会发生冲突。之所以不发生冲突,是因为尽管使用的是同样的类名称,但它们划分到不同的应用程序域中。
3、当前域子域
在当前域中新建一个子域。这里也有一个要注意的,就是当父级域中(也就是当前域)没有同名的定义时,子域中的类才会被定义。
此 方法的一个用处可能是作为一个使用主应用程序的类型的多屏幕丰富 Internet 应用程序 (RIA) 模块,该模块作为主应用程序的子级加载。如果能够确保所有类始终更新为向后兼容,并且正在加载的应用程序始终比其加载的软件的版本新,则子级将使用父级版 本。如果可以确保不继续拥有对子级 SWF 的引用,则拥有了新的应用程序域还使您能够卸载所有的类定义以便于垃圾回收。此方法使加载的模块可以共享加载者的 singleton 对象和静态类成员。
热门文章推荐
- [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示例