`
npjev02v
  • 浏览: 14374 次
社区版块
存档分类
最新评论

ApplicationDomain

阅读更多

ApplicationDomain
2010年08月01日
  
ApplicationDomain类 ApplicationDomain 类的用途是存储 ActionScript 3.0 定义表。SWF 文件中的所有代码被定义为存在于应用程序域中。 可以使用应用程序域划分位于同一个安全域中的类。这允许同一个类存在多个定义,并且还允许子级重用父级定义。
  在使用 Loader 类 API 加载用 ActionScript 3.0 编写的外部 SWF 文件时,可以使用应用程序域。(请注意,在加载图像或用 ActionScript 1.0 或 ActionScript 2.0 编写的 SWF 文件时不能使用应用程序域。)包含在已加载类中的所有 ActionScript 3.0 定义都存储在应用程序域中。加载 SWF 文件时,通过将 LoaderContext 对象的 applicationDomain 参数设置为 ApplicationDomain.currentDomain,可以指定文件包含在 Loader 对象所在的相同应用程序域中。通过将加载的 SWF 文件放在同一个应用程序域中,可以直接访问它的类。如果加载的 SWF 文件包含嵌入的媒体(可通过其关联的类名称访问),或者您要访问加载的 SWF 文件的方法,则这种方式会很有用。如以下示例所示:
  
  
  
  
  代码package {  
  import flash.display.Loader; 
  import flash.display.Sprite;
  import flash.events.*;
  import flash.net.URLRequest; 
  import flash.system.ApplicationDomain;
  import flash.system.LoaderContext; 
  public class ApplicationDomainExample extends Sprite    {
  private var ldr:Loader;      
  public function ApplicationDomainExample()     
  {           
  ldr = new Loader();     
  var req:URLRequest = new URLRequest("Greeter.swf");    
  var ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);   
  ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);      
  ldr.load(req, ldrContext);      
  }     
  private function completeHandler(event:Event):void   
  {          
  ApplicationDomain.currentDomain.getDefinition("Greeter");    
  var myGreeter:Greeter = Greeter(event.target.content);   
  var message:String = myGreeter.welcome("Tommy");       
  trace(message); // Hello, Tommy        }    }}
  }
  }
  }
  使用应用程序域时,还要记住以下几点:
  SWF 文件中的所有代码被定义为存在于应用程序域中。 主应用程序在"当前域"中运行。"系统域"中包含所有应用程序域(包括当前域),也就是,它包含所有 Flash Player 类。 所有应用程序域(除系统域外)都有关联的父域。主应用程序的应用程序域的父域是系统域。已加载的类仅在其父级中没有相关定义时才进行定义。不能用较新的定义覆盖已加载类的定义。下图显示了某个应用程序在单个域 (domain1.com) 中加载多个 SWF 文件的内容。根据加载内容的不同,可以使用不同的应用程序域。紧跟的文本说明用于为应用程序中的每个 SWF 文件设置适当应用程序域的逻辑。
  
  
  
    主应用程序文件为 application1.swf。它包含从其它 SWF 文件加载内容的 Loader 对象。在此方案下,当前域为 Application domain 1。用法 A、用法 B 和用法 C 说明了为应用程序中的每个 SWF 文件设置适当应用程序域的不同方法。
  用法 A:通过创建系统域的子级划分子级 SWF 文件。在示意图中,Application domain 2 创建为系统域的子级。application2.swf 文件在 Application domain 2 中加载,因此其类定义从 application1.swf 中定义的类中划分出来。
  此方法的一个用处是使旧版应用程序能够动态加载相同应用程序的更新版本,而不会发生冲突。之所以不发生冲突,是因为尽管使用的是同样的类名称,但它们划分到不同的应用程序域中。
  以下代码将创建作为系统域子级的应用程序域:
  request.url = "application2.swf";
  request.applicationDomain = new ApplicationDomain();

  用法 B:在当前类定义中添加新的类定义。module1.swf 的应用程序域设置为当前域 (Application domain 1)。这可让您将新的类定义添加到应用程序的当前一组类定义中。这可用于主应用程序的运行时共享库。加载的 SWF 被视为远程共享库 (RSL)。使用此方法可以在应用程序启动之前使用预加载器加载 RSL。
  以下代码将某应用程序域设置为当前域:
  request.url = "module1.swf";
  request.applicationDomain = ApplicationDomain.currentDomain;

  用法 C:通过创建当前域的新子域,使用父级的类定义。module3.swf 的应用程序域是当前域的子级,并且子级使用所有类的父级的版本。此方法的一个用处可能是作为一个使用主应用程序的类型的多屏幕丰富 Internet 应用程序 (RIA) 模块,该模块作为主应用程序的子级加载。如果能够确保所有类始终更新为向后兼容,并且正在加载的应用程序始终比其加载的软件的版本新,则子级将使用父级版本。如果可以确保不继续拥有对子级 SWF 的引用,则拥有了新的应用程序域还使您能够卸载所有的类定义以便于垃圾回收。
  此方法使加载的模块可以共享加载者的 singleton 对象和静态类成员。
  以下代码将创建当前域的新子域:
  request.url = "module3.swf";
  request.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);

分享到:
评论

相关推荐

    applicationDomain学习资料

    applicationDomain学习资料

    深入理解ApplicationDomain和SecurityDomain

    深入理解ApplicationDomain和SecurityDomain

    ApplicationDomain的误解,安全沙箱有关内容

    ApplicationDomain的误解,安全沙箱有关内容

    详细介绍ApplicationDomain和SecurityDomain

    详细介绍ApplicationDomain和SecurityDomain的原理,想对这方面的知识做深入研究的可以看下

    Flex ApplicationDomain

    NULL 博文链接:https://luhantu.iteye.com/blog/1915935

    Modeling with UML

    and concepts for the application domain, criticality, and complexity of each system to be developed. Techniques for management of projects, configuration, variant and quality, as well as software ...

    Designing Reliable and Efficient Networks on Chips

    Developing NoC based interconnect tailored to a particular application domain, satisfying the application performance constraints with minimum power-area overhead is a major challenge. With technology...

    FDTD的并行算法论文

    implementation details or the application domain is given. The model is used to formalize the problem of optimal distribution of computational load to an arbitrary set of resources across a ...

    计算机专业词汇.txt

    app domain (application domain)应用域 application 应用、应用程序 application framework 应用程序框架 appearance 外观 append 附加 architecture 架构、体系结构 archive file 归档文件、存档文件 argument引数...

    AS3.0模块基础知识

    context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); context.applicationDomain = ApplicationDomain.currentDomain; context.applicationDomain = new ApplicationDomain(); ...

    很强大.net逆向工具

    本工具能够属于reflector的升级版,可以嵌入牛X的插件做很多事情。

    Introduction to Parallel Algorithms - Arrays Trees Hypercubes

    Within each chapter, the material is organized according to the application domain, starting with the simple algorithms and advancing to the more complicated. Emphasis is placed on the paradigms and ...

    Adobe Flash Player for IE v11.3.300.265

    Adobe Flash Player(Flash Player官方下载)是一个集成的多媒体播放器,让你在Web上享受更广泛的多媒体体验。Adobe Flash Player官方版可显示和播放多媒体内容,从数以千计的高度...— ApplicationDomain.getQualifie

    SAD上机实验

    面向对象的系统分析和设计的主要目的是完成对某个特定应用论域(application domain)的分析和系统的建模。应完成的主要工作是描述系统中的对象、对象的属性和操作、对象的动态特性、对象间的构造关系和通信关系等,...

    系统分析与设计课件

    面向对象的系统分析和设计的主要目的是完成对某个特定应用论域(application domain)的分析和系统的建模。应完成的主要工作是描述系统中的对象、对象的属性和操作、对象的动态特性、对象间的构造关系和通信关系等,...

Global site tag (gtag.js) - Google Analytics