Loader的 load方法有两个参数

第二个参数是LoaderContext对象

LoaderContext对象里有一个applicationDomain(
程序
域)对象

设置程序域对象可以设置两个SWF之间的共享库...


   


  
加载器的 ApplicationDomain 的子级。
默认值。 可以使用语法 new ApplicationDomain(ApplicationDomain.currentDomain) 显式表示这种选择。 这将允许所加载的 SWF 文件直接使用父级的类,例如,可通过编写 new MyClassDefinedInParent() 来使用。 但是父级则不能使用此语法;如果父级要使用子级的类,它必须调用 ApplicationDomain.getDefinition() 来检索它们。 这种选择的优点是,如果子级定义的类与父级已经定义的类同名,不会出现错误结果;子级只会继承父级对该类的定义,除非子级或父级调用 ApplicationDomain.getDefinition() 方法来检索子级的冲突定义,否则将不使用此定义。

var loader:Loader 
=
 
new
 Loader();

var context:LoaderContext 
=
 
new
 LoaderContext();


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

loader.load(
new
 URLRequest(
"
text.swf
"
),context);

   loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);

function onComplete(e:Event):
void


{


       var Circle:Class = this.loaderInfo.applicationDomain.getDefinition("Circle") as Class;


       var circle:MovieClip = new Circle();

addChild(circle);


  }

//
输出:ReferenceError: Error #1065: 变量 Circle 未定义。


        at flash.system::ApplicationDomain
/
getDefinition()


        at load_fla::MainTimeline
/
onComplete()

加载器自己的 ApplicationDomain。
使用 ApplicationDomain.currentDomain 时请使用此应用程序域。 加载完成后,父级和子级可以直接使用对方的类。 如果子级试图定义的类与父级已经定义的类同名,将出现错误并放弃加载。

var loader:Loader 
=
 
new
 Loader();


    
var context:LoaderContext 
=
 
new
 LoaderContext();


    
context.applicationDomain 
=
 ApplicationDomain.currentDomain;

    loader.load(
new
 URLRequest(
"
text.swf
"
),context);


    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);

function onComplete(e:Event):
void


   {


     var Circle:Class 
=
 
this
.loaderInfo.applicationDomain.getDefinition(
"
Circle
"
) as Class;


        var circle:MovieClip 
=
 
new
 Circle();

       addChild(circle);


  }

//
正常加载

系统 ApplicationDomain 的子级。
使用 new ApplicationDomain(null) 时请使用此应用程序域。 这将完全分离加载方和被加载方,从而允许它们使用相同的名称定义各自版本的类并且不会产生冲突或隐藏。 一方查看另一方的类的唯一方式是调用 ApplicationDomain.getDefinition() 方法。

var loader:Loader 
=
 
new
 Loader();

     
var context:LoaderContext 
=
 
new
 LoaderContext();


     
context.applicationDomain 
=
 
new
 ApplicationDomain(
null
);

     loader.load(
new
 URLRequest(
"
text.swf
"
),context);

loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete);

function onComplete(e:Event):
void


  {


       var Circle:Class 
=
 
this
.loaderInfo.applicationDomain.getDefinition(
"
Circle
"
) as Class;

       var circle:MovieClip 
=
 
new
 Circle();


      addChild(circle);


   
}


    //
输出:ReferenceError: Error #1065: 变量 Circle 未定义http://www.shengshiyouxi.com


        at flash.system::ApplicationDomain
/
getDefinition()

        at load_fla::MainTimeline
/
onComplete()

其它 ApplicationDomain 的子级。
有时可能会有更复杂的 ApplicationDomain 层次结构。 可以将 SWF 文件从您自己的 SecurityDomain 加载到任何 ApplicationDomain 中。 例如,new ApplicationDomain(ApplicationDomain.currentDomain.parentDomain.parentDomain) 将 SWF 文件加载到当前域父级的父级的新子级中。

as3 Loader程序域的更多相关文章

  1. lambda+mutable配合move实现单函数多程序域

    主代码 //-----------------------------------说明一的代码 void fun0{ int t = 10; auto loopFun = [=]() mutable{ ...

  2. C#中查找或结束程序域中的主、子进程

    有时候,我们的程序需要启动一些子进程,如嵌入的图形程序. 当启动一个进程后,获得这个进程信息Process,然后其内部在某个时刻启动了一个子进程,这个时候就涉及程序域和进程树的概念.当我们通过非正常操 ...

  3. as3 程序域

    问题我要在应用程序中载入其他域的swf文件,并且允许它访问程序中的 ActionScript 解决办法使用flash.system.Security.allowDomain( ), flash.sys ...

  4. as3 Loader 加载资源后内存泄露无法释放的问题。

    本人用Loader加载外部一个swf.之后unloadAndStop,Flash概要分析发现,内存没有被释放. 网上搜了一大堆文章,要么就是加载bitmapdata之后,自己dispose,要么就是加 ...

  5. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)6-----在不卸载程序域的前提下替换程序集文件。

    当某个程序集文件被载入AppDomain,该文件在AppDomain.Unload之前是不能被替换和删除的.使用AppDomainSetup的影像复制功能可以实现在不卸载程序的情况下替换或者删除程序集 ...

  6. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)2----通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域

    实现目的:动态加载dll,执行完毕之后可以随时卸载掉,并可以替换这些dll,以在运行中更新dll中的类. 其实就是通过应用程序域AppDomain加载和卸载程序集. 在这方面微软有篇文章http:// ...

  7. C#反射 程序域

    1:加载dll到当前应用程序域: public static void LoadAllAssembly(string bindir) //bindir是dll所在的完整路径 { List<Ass ...

  8. [ActionScript 3.0] AS3.0 Loader加载子swf时是否需要指定新的应用程序域ApplicationDomain

    实际应用中, Loader加载子swf时是否需要指定新的应用程序域ApplicationDomain,需要择情况而定. 1.如果在本地将项目位置添加到flashplayer受信任位置(上一篇文章所述) ...

  9. 安全沙箱冲突:Loader.content:XX 不能访问 XX 可以通过调用 Security.allowDomain 来避免此冲突。

    参考资料:http://tieba.baidu.com/p/882855105 感谢:Z0287yyy 感谢分享精神. 具体解决方案:在loader去load的时候,带上这个参数 var contex ...

随机推荐

  1. CSS知识总结之浏览器(持续更新)

    web页面浏览器渲染过程 1.解析html文件,并构建DOM树: 在DOM树中,每一个html标签都有一个对应的节点,并且每一个文本也有一个对应 的节点(js的textNode),DOM树的根节点就是 ...

  2. 关于Office 中的墨迹功能(可作word电子签名)

    原文 关于Office 中的墨迹功能 通过使用 Microsoft Office 2003 中的墨迹功能,可使用 Tablet PC 和 Tablet 笔将手写笔记插入到 Microsoft Offi ...

  3. DDD分层架构之值对象(介绍篇)

    DDD分层架构之值对象(介绍篇) 前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使 ...

  4. 编译安装gimp插件之Mathmap(流水记录)

    本文为在Fedora 20下编译安装Mathmap1.3.5的编译过程,如果你仅仅需要快速的安装Mathmap,那么请拉至文末的"快速安装" 其实,过程还是很有趣的,充满Error ...

  5. [译]Java垃圾回收是如何工作的

    说明:这篇文章来翻译来自于Javapapers 的How Java Garbage Collection Works 这部分教程是为了理解Java垃圾回收的基础以及它是如何工作的.这是垃圾回收系列教程 ...

  6. IE支持CSS3圆角

    在CSS中使用CSS插件文件即可让IE6/IE7/IE8浏览器. 具体CSS代码: .yuan { border: 2px solid #C0C0C0; -moz-border-radius: 10p ...

  7. 基于Quqrtz.NET 做的任务调度管理工具

    基于Quqrtz.NET 做的任务调度管理工具 国庆前,需求让我看了一下任务调度的数据表设计.和之前一样,有100多个字段,p1 ~ p100, 我说这是干嘛啊!按这写,写死去了! 然后在网上搜了一下 ...

  8. extern用法汇总

    extern 在源文件A里定义的函数,在其他源文件中是看不见的(即不能訪问).为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明: extern   函数原型: 这样,在源文件B里也能够调 ...

  9. Scala从零开始:使用Intellij IDEA写hello world

    Scala从零开始:使用Intellij IDEA写hello world 分类: Scala |2014-05-23 00:39 |860人阅读   引言 在之前的文章中,我们介绍了如何使用Scal ...

  10. 必须掌握的JavaScript基本知识

    作为一个前端工作者,应该了解一些javascript的发展历史,javascript实现及版本等.基本概念包括语法.关键字.变量.数据类型.操作符.语句控制及函数等,它们和我们学习的其它语言C/C++ ...