Dynamisches Laden von AnzeigeinhaltenFlash Player 9 und höher, Adobe AIR 1.0 und höher Sie können eines der folgenden externen Anzeigeelemente in eine ActionScript 3.0-Anwendung laden:
Diese Anzeigeelemente können Sie mit der Loader-Klasse laden. Laden von AnzeigeobjektenLoader-Objekte dienen zum Laden von SWF- und Grafikdateien in eine Anwendung. Die Loader-Klasse ist eine Unterklasse der DisplayObjectContainer-Klasse. Ein Loader-Objekt kann nur ein untergeordnetes Anzeigeobjekt in seiner Anzeigeliste enthalten – das Anzeigeobjekt, das die geladene SWF- oder Grafikdatei darstellt. Wenn Sie der Anzeigeliste ein Loader-Objekt hinzufügen (wie im folgenden Code), haben Sie der Anzeigeliste auch das geladene untergeordnete Anzeigeobjekt hinzugefügt (nachdem es geladen wurde): var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); this.addChild(pictLdr); Wenn die SWF-Datei oder das Bild geladen ist, können Sie das geladene Anzeigeobjekt in einen anderen Anzeigeobjektcontainer verschieben, z. B. in das DisplayObjectContainer-Objekt container im folgenden Beispiel: 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);
}
Überwachen des LadefortschrittsWenn das Laden der Datei gestartet wurde, wird ein LoaderInfo-Objekt erstellt. Ein LoaderInfo-Objekt enthält Informationen wie den Ladefortschritt, die URLs des ladenden und des geladenen Objekts, die Gesamtanzahl der Byte für das Medium und die nominelle Höhe und Breite des Mediums. Ein LoaderInfo-Objekt löst darüber hinaus Ereignisse zur Überwachung des Ladefortschritts aus. Das folgende Diagramm zeigt die verschiedenen Einsatzmöglichkeiten des LoaderInfo-Objekts – für die Instanz der Hauptklasse der SWF-Datei, für ein Loader-Objekt und für ein vom Loader-Objekt geladenes Objekt: Auf das LoaderInfo-Objekt kann als Eigenschaft des Loader-Objekts und des geladenen Anzeigeobjekts zugegriffen werden. Sobald das Laden begonnen hat, kann über die Eigenschaft contentLoaderInfo des Loader-Objekts auf das LoaderInfo-Objekt zugegriffen werden. Wenn das Anzeigeobjekt vollständig geladen ist, kann über die Eigenschaft loaderInfo des Anzeigeobjekts als Eigenschaft des geladenen Anzeigeobjekts auf das LoaderInfo-Objekt zugegriffen werden. Die Eigenschaft loaderInfo des geladenen Anzeigeobjekts verweist auf das gleiche LoaderInfo-Objekt wie die Eigenschaft contentLoaderInfo des Loader-Objekts. Anders ausgedrückt, das geladene Objekt und das Loader-Objekt, das es geladen hat, verwenden dasselbe LoaderInfo-Objekt. Um auf die Eigenschaften des geladenen Inhalts zugreifen zu können, müssen Sie dem LoaderInfo-Objekt einen Ereignis-Listener hinzufügen, wie im folgenden Code dargestellt: 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;
}
Weitere Informationen finden Sie unter Verarbeiten von Ereignissen. Festlegen des LadekontextsWenn Sie eine externe Datei über die load()- oder loadBytes()-Methode der Loader-Klasse in Flash Player oder AIR laden, können Sie optional einen context-Parameter angeben. Bei diesem Parameter handelt es sich um ein LoaderContext-Objekt. Die LoaderContext-Klasse umfasst drei Eigenschaften, mit denen Sie den Kontext definieren können, wie der geladene Inhalt verwendet werden kann:
Im Folgenden ist ein Beispiel für die Suche nach einer Richtliniendatei aufgeführt, wenn eine Bitmap aus einer anderen Domäne geladen wird: 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);
Im Folgenden ist ein Beispiel für die Suche nach einer Richtliniendatei aufgeführt, wenn eine SWF-Datei aus einer anderen Domäne geladen wird, um diese Datei in der gleichen Sicherheits-Sandbox wie das Loader-Objekt zu platzieren. Darüber hinaus fügt der Code die Klassen in der geladenen SWF-Datei der gleichen Anwendungsdomäne wie das Loader-Objekt hinzu: 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);
Weitere Informationen finden Sie in der Beschreibung der LoaderContext-Klasse im Handbuch ActionScript 3.0 Reference for the Adobe Flash Platform. |
|