as3 Loader程序域

Loader的 load方法有兩個參數

第二個參數是LoaderContext對象

LoaderContext對象裏有一個applicationDomain( 程序 域)對象

設置程序域對象能夠設置兩個SWF之間的共享庫...
   
   加載器的 ApplicationDomain 的子級。 默認值。 能夠使用語法 new ApplicationDomain(ApplicationDomain.currentDomain) 顯式表示這種選擇。 這將容許所加載的 SWF 文件直接使用父級的類,例如,可經過編寫 new MyClassDefinedInParent() 來使用。 可是父級則不能使用此語法;若是父級要使用子級的類,它必須調用 ApplicationDomain.getDefinition() 來檢索它們。 這種選擇的優勢是,若是子級定義的類與父級已經定義的類同名,不會出現錯誤結果;子級只會繼承父級對該類的定義,除非子級或父級調用 ApplicationDomain.getDefinition() 方法來檢索子級的衝突定義,不然將不使用此定義。
    app

var loader:Loader  =   new  Loader(); this


     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 時請使用此應用程序域。 加載完成後,父級和子級能夠直接使用對方的類。 若是子級試圖定義的類與父級已經定義的類同名,將出現錯誤並放棄加載。
    spa

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 文件加載到當前域父級的父級的新子級中。 ip

相關文章
相關標籤/搜索