转自:http://blog.sina.com.cn/s/blog_5e8302c80100cxxz.html

ApplicationDomain

(终于消除了长久以来对ApplicationDomain的误解,原来一直以为这是一个和安全沙箱有关内容,看来我真的错了。在flash_as3_programming中有详细的解释。

  • 应用程序域 (Application domain):用于将不同 SWF 文件中使用的类分开的机制,以便在 SWF 文件包含具有相同名称的不同类时,这些类不会彼此覆盖。

每个安全域被分成一个或多个由 ApplicationDomain 对象表示的应用程序域。 应用程序域并不是用于安全目的;它们用于管理 ActionScript 代码的协作单元。 如果是从其它域加载 SWF 文件,并允许将它放置到另外一个安全域中,则您将无法控制所加载的 SWF 文件被放置到哪个应用程序域中;即使您指定应选择某个应用程序域,也会忽略。 但是,如果是将 SWF 文件加载到您自己的安全域中(因为此 SWF 文件来自您自己的域,或者您正在将它导入到您的安全域中),您就可以控制为所加载的 SWF 文件选择哪个应用程序域。

应用程序域有三种类型,系统域子域(新的应用程序域)、当前应用程序域、当前应用程序域的子域。他们的关系就像是这样

ApplicationDomain 类的用途是存储 ActionScript 3.0 定义表。SWF 文件中的所有代码被定义为存在于应用程序域中。可以使用应用程序域划分位于同一个安全域中的类。这允许同一个类存在多个定义,并且还允许子级重用父级定义。
利用ApplicationDomain加载类定义的代码如下

1.  var urlRequest:URLRequest = new URLRequest(url);
2.  var loader:Loader = new Loader();
3.  var context:LoaderContext = new LoaderContext();
4.  //当前域
5.  context.applicationDomain = ApplicationDomain.currentDomain;
6.  //新应用程序域
7.  //context.applicationDomain = new ApplicationDomain();
8.  //当前域子域
9.  //context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
10.  loader.load(urlRequest, context);

当加载完成后我们可以像这样来使用加载的类定义

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 对象和静态类成员。

转载于:https://www.cnblogs.com/wonderKK/archive/2012/09/06/2673779.html

(转)ApplicationDomain相关推荐

  1. 使用 ApplicationDomain 类

    本文版权归 博客园 黑夜丶残枫 所有,转载请详细标明原作者及出处,以示尊重!! 作者:黑夜丶残枫 原文:使用 ApplicationDomain 类 要说应用程序域,就不得不说安全沙箱 安全沙箱在帮助 ...

  2. 【转】Flex Application 初始化顺序

    转自:http://www.jexchen.com 大家都知道,我们在编写Flex应用程序时,通常是以<mx:Application>标签作为开头,实际上,Flex应用程序在启动运行的时候 ...

  3. 黄聪:Microsoft Enterprise Library 5.0 系列教程(九) Policy Injection Application Block

    代理对象(Proxy Object)会通过Handler链定位到真实对象(Real Object),而Policy则被注入到代理对象和真实对象中.整个流程如图: 我个人对Policy Injectio ...

  4. [转] Adobe Flash Professional CS解决提示:您的内容将不流化。运行时共享库(RSL)预加载要求下载您的所有内容后才可播放第一帧。...

    某日,发布并测试flash的过程中,总是出现"运行时共享库预加载警告"弹出框(如图1),并会生成.swz文件,开始以为对flash后续开发没有影响,结果不然,会导致.swf文件通过 ...

  5. 动态加载flex皮肤.

    动态加载swf文件作为flex 的皮肤 There are lots of great resources out there on how to skin your Flex application ...

  6. 自定义Flex Library的使用

    一般为了达到资源或是组件的共用,会用到flex library.在flex library可以添加swf.图片资源或的引用. 使用方法: 在flash builder中右击选中"新建&quo ...

  7. flex swf和movieclip之前的微妙关系

    flex swf和movieclip之前的微妙关系 开始不清楚, 一直尝试想load图片一样加载一个swftools转换的swf,然后在尝试转换成movieclip的时候,总是报错, avmiMovi ...

  8. SwiftSuspenders 1.6 浅出深入 深入 2

    类解读 Injector Injector是整个SwiftSuspenders框架的核心.与开发者打交道最多的也就是Injector类.Injector就是注入器,其功能相当于Spring里的Appl ...

  9. SWFLibrary类加载外部资源库

    在as3中使用到外部SWF文件做为资源库,通常是用ApplicationDomain类的getDefinition()来得到类定义, 再进行实例化.SWFLibrary类对这一方法封装,让调用外部资源 ...

  10. 演义群侠传(七)【GC垃圾回收】

    在<给AS程序员的一点建议一文>中我提到了释放资源的重要性.最近在一些项目过程中我又对这方面有了更多的理解,在此希望能够分享给大家.首先让我们来回顾一下关于垃圾回收(Garbage Col ...

最新文章

  1. 从零到百亿级,揭秘科大讯飞广告平台架构演进之路
  2. vue ui 启动,浏览器报错Unexpected token
  3. 两万字教会你解析库之Beautiful Soup
  4. Cocos2d-3.x Android环境搭建
  5. SharePoint【学习笔记】-- SPWeb.EnsureUser()注意AllowUnsafeUpdates=true
  6. 机器学习数据特征归一化的目的及方式
  7. java泛型要用t,Java泛型中T和問號(通配符)的區別
  8. dell服务器管理口ip地址_戴尔服务器IDRAC命令配置IP地址
  9. 初学3D建模有这80G笔刷简直绝了
  10. 银河麒麟WPS表格打开TXT文件的方法
  11. 重装正版Win10系统图文教程
  12. Word文档进入只读模式
  13. 三相电流滞环跟踪PWM控制
  14. 倒车入库技巧图解,不想过关都难!----fwqlzz love is for ever
  15. 程序复杂性度量方法-McCabe
  16. 什么是SAP GUI的client
  17. 时间转换 取模(秒转化成分钟) 65秒转为1分5秒
  18. 达奇机器人编程学院_培养孩子创造力的Wonder达奇智能机器人
  19. windows7中文改成英文
  20. 数据结构java版之《简单排序》

热门文章

  1. mysql表添加字段_怎么给mysql数据表添加字段
  2. java blowfish ecb,node.js – 使用nodejs crypto和php的mcrypt解密blowfish-ecb
  3. java jsonarray 拷贝_JSONObject与JSONArray使用
  4. 【spring】注解开发和spring整合junit
  5. Debian Ubuntu/Centos7设置某些软件不自动更新
  6. Linux Tomcat9 控制界面及管理配置
  7. 使用 urllib 构造请求对象
  8. python入门笔记第一天
  9. [H5-Compress-Image]利用canvas实现 javascript 图片压缩处理_基于requirejs模块化的代码实现...
  10. 一段经典的 Java 风格程序 ( 类,包 )