zoukankan      html  css  js  c++  java
  • as3 Loader程序域

    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 文件加载到当前域父级的父级的新子级中。

  • 相关阅读:
    WM11破解版
    安装系统
    linux配置问题
    PAT:1022. Digital Library (30) (部分正确,错最后两个)
    PAT:1023. Have Fun with Numbers (20) AC
    PAT:1081. Rational Sum (20) AC(类似math.h中的sqrt(1.0*n),algorithm的abs()用于取绝对值)
    PAT:1013. Battle Over Cities (25) AC
    conv2的计算过程
    UFLDL Tutorial
    视频深度学习 Deep Learning
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3174450.html
Copyright © 2011-2022 走看看