Dynamiczne ładowanie treści wyświetlanychFlash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje Do aplikacji ActionScript 3.0 można załadować dowolne z poniższych zasobów wyświetlanych:
Do ładowania tych zasobów służy klasa Loader. Ładowanie obiektów wyświetlanychObiekty Loader służą do ładowania plików SWF i plików graficznych do aplikacji. Klasa Loader jest podklasą klasy DisplayObjectContainer. Lista wyświetlania obiektu Loader może zawierać tylko jeden podrzędny obiekt wyświetlany — obiekt wyświetlany reprezentujący ładowany plik SWF lub plik graficzny. Dodanie obiektu Loader do listy wyświetlania, jak w poniższym kodzie, powoduje również dodanie ładowanego podrzędnego obiektu wyświetlanego (po załadowaniu) do tej listy wyświetlania: var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); this.addChild(pictLdr); Po załadowaniu pliku SWF lub obrazu możliwe jest przesunięcie załadowanego obiektu wyświetlanego do innego kontenera obiektu wyświetlanego, takiego jak obiekt container DisplayObjectContainer w tym przykładzie: 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);
}
Monitorowanie postępu ładowaniaPo rozpoczęciu ładowania pliku następuje utworzenie obiektu LoaderInfo. Obiekt LoaderInfo zawiera informacje, takie jak postęp ładowania, adresy URL modułu ładującego i treści ładowanej, sumaryczna liczba bajtów dla nośnika, a także nominalna wysokość i szerokość nośnika. Obiekt LoaderInfo wywołuje również zdarzenia dla monitorowania postępu ładowania. Poniższy schemat prezentuje różne zastosowania obiektu LoaderInfo — dla instancji głównej klasy pliku SWF, dla obiektu Loader oraz dla obiektu załadowanego przez obiekt Loader: Do obiektu LoaderInfo można uzyskać dostęp jak do właściwości obiektu Loader i załadowanego obiektu wyświetlanego. Po rozpoczęciu ładowania do obiektu LoaderInfo można uzyskać za pośrednictwem właściwości contentLoaderInfo obiektu Loader. Po zakończeniu ładowania obiektu wyświetlanego do obiektu LoaderInfo można uzyskać dostęp w taki sposób, jak do właściwości obiektu załadowanego — za pośrednictwem właściwości loaderInfo obiektu wyświetlanego. Właściwość loaderInfo załadowanego obiektu wyświetlanego dotyczy tego samego obiektu LoaderInfo, co właściwość contentLoaderInfo obiektu Loader. Innymi słowy — obiekt Loaderinfo jest współużytkowany przez obiekt załadowany i obiekt Loader, który go załadował (współużytkowany przez obiekt ładowany i ładujący). W celu uzyskania dostępu do ładowanej treści należy dodać do obiektu LoaderInfo detektor zdarzeń, jak w poniższym kodzie: 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;
}
Więcej informacji zawiera sekcja Obsługa zdarzeń. Określanie kontekstu ładowaniaPodczas ładowania pliku zewnętrznego do programu Flash Player lub AIR za pośrednictwem metody load() lub metody loadBytes() klasy Loader możliwe jest określenie opcjonalnego parametru context. Ten parametr jest obiektem LoaderContext. Klasa LoaderContext zawiera trzy właściwości, które umożliwiają zdefiniowanie kontekstu wykorzystania załadowanej treści:
Poniżej przedstawiono przykład sprawdzania dostępności pliku strategii podczas ładowania bitmapy z innej domeny: 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);
Poniżej przedstawiono przykład sprawdzania dostępności pliku strategii podczas ładowania pliku SWF z innej domeny w celu umieszczenia pliku w tym samym bezpiecznym obszarze izolowanym, w którym znajduje się obiekt Loader. Ponadto kod dodaje klasy z załadowanego pliku SWF do tej samej domeny aplikacji, co obiekt 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);
Więcej informacji zawiera opis klasy LoaderContext w Skorowidzu języka ActionScript 3.0 dla platformy Adobe Flash. |
|