以動態方式載入顯示內容Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 您可以將下列任何外部顯示資源載入 ActionScript 3.0 應用程式中:
您可以使用 Loader 類別載入這些資源。 載入顯示物件Loader 物件是用來將 SWF 檔及圖像檔載入應用程式中。Loader 類別是 DisplayObjectContainer 類別的子類別。Loader 物件只能在其顯示清單中包含一個子顯示物件,顯示物件代表它所載入的 SWF 或圖像檔。當您將 Loader 物件加入顯示清單時 (如下列程式碼所示),也會在載入子顯示物件後,將其加入至顯示清單: var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); this.addChild(pictLdr); 載入 SWF 檔或影像以後,您可以將載入的顯示物件移至另一個顯示物件容器,如本範例中的 container DisplayObjectContainer 物件: import flash.display.*; import flash.net.URLRequest; import flash.events.Event; var container:Sprite = new Sprite(); addChild(container); var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); pictLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded); function imgLoaded(event:Event):void { container.addChild(pictLdr.content); } 監視載入進度檔案開始載入之後,就會建立 LoaderInfo 物件。LoaderInfo 物件會提供資訊,如載入進度、載入器與被載入者的 URL、媒體的位元組總和,以及媒體的表面高度和寬度。LoaderInfo 也會傳送事件,以供監視載入進度。 下圖顯示 LoaderInfo 物件的不同用法,分別針對:SWF 檔之主要類別的實體、Loader 物件,以及由 Loader 物件所載入的物件: LoaderInfo 物件可以同時做為 Loader 物件和已載入顯示物件的屬性加以存取。載入作業一開始,LoaderInfo 物件就可以透過 Loader 物件的 contentLoaderInfo 屬性加以存取。顯示物件完成載入以後,LoaderInfo 物件也可以做為已載入顯示物件的屬性,透過顯示物件的 loaderInfo 屬性加以存取。已載入顯示物件的 loaderInfo 屬性所參考的 LoaderInfo 物件與 Loader 物件的 contentLoaderInfo 屬性相同;換句話說,已載入的物件與載入該物件的 Loader 物件 (亦即,載入器與被載入者) 會共用一個 LoaderInfo 物件。 若要存取已載入內容的屬性,就要將事件偵聽程式加入至 LoaderInfo 物件,如下列程式碼所示: import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; var ldr:Loader = new Loader(); var urlReq:URLRequest = new URLRequest("Circle.swf"); ldr.load(urlReq); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); addChild(ldr); function loaded(event:Event):void { var content:Sprite = event.target.content; content.scaleX = 2; } 如需詳細資訊,請參閱處理事件。 指定載入內容將外部檔案透過 Loader 類別的 load() 或 loadBytes() 方法載入 Flash Player 或 AIR 之中時,您可以選擇指定 context 參數,這個參數是 LoaderContext 物件。 LoaderContext 類別包括三個屬性,可以讓您定義如何使用載入內容的環境:
在下列範例中,會示範從另一個網域載入點陣圖時,檢查原則檔的情形: var context:LoaderContext = new LoaderContext(); context.checkPolicyFile = true; var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/photo11.jpg"); var ldr:Loader = new Loader(); ldr.load(urlReq, context); 在下列範例中,會示範從另一個網域載入 SWF 時,檢查原則檔,以便將檔案放入與 Loader 物件相同的安全執行程序中。此外,程式碼也會將已載入 SWF 檔中的類別加入與 Loader 物件相同的應用程式網域中: var context:LoaderContext = new LoaderContext(); context.securityDomain = SecurityDomain.currentDomain; context.applicationDomain = ApplicationDomain.currentDomain; var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/library.swf"); var ldr:Loader = new Loader(); ldr.load(urlReq, context); 如需詳細資訊,請參閱適用於 Adobe Flash Platform 的 ActionScript 3.0 參考中的 LoaderContext 類別。 |
|