Caricamento dinamico di contenuto di visualizzazioneFlash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive È possibile caricare una delle seguenti risorse di visualizzazione esterne in un'applicazione ActionScript 3.0:
Per caricare queste risorse è necessario utilizzare la classe Loader. Caricamento di oggetti di visualizzazioneGli oggetti Loader vengono utilizzati per caricare file SWF e file di immagini nelle applicazioni. La classe Loader è una sottoclasse della classe DisplayObjectContainer. Un oggetto Loader può contenere nel proprio elenco di visualizzazione un solo oggetto di visualizzazione secondario, vale a dire l'oggetto di visualizzazione che rappresenta il file SWF o di immagine che carica. Quando aggiungete un oggetto Loader nell'elenco di visualizzazione (come illustrato nel codice seguente), viene aggiunto anche l'oggetto di visualizzazione secondario caricato: var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); this.addChild(pictLdr); Una volta caricato il file SWF o l'immagine, potete spostare l'oggetto di visualizzazione caricato in un altro contenitore di oggetti di visualizzazione, come l'oggetto DisplayObjectContainer del contenitore nell'esempio seguente: 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);
}
Monitoraggio dello stato di avanzamento del caricamentoUna volta avviato il caricamento del file, viene creato un oggetto LoaderInfo. L'oggetto LoaderInfo contiene informazioni che includono lo stato di avanzamento del caricamento, gli URL del loader e del contenuto caricato, il numero totale di byte del contenuto multimediale e l'altezza e larghezza nominali dello stesso. L'oggetto LoaderInfo invia inoltre eventi relativi al monitoraggio dello stato di avanzamento del caricamento. Nel diagramma seguente sono illustrati i diversi usi dell'oggetto LoaderInfo: per l'istanza della classe principale del file SWF, per un oggetto Loader e per un oggetto caricato dall'oggetto Loader: LoaderInfo è accessibile come una proprietà dell'oggetto Loader e dell'oggetto di visualizzazione caricato. Non appena il caricamento viene avviato, è possibile accedere all'oggetto LoaderInfo mediante la proprietà contentLoaderInfo dell'oggetto Loader. Al termine del caricamento dell'oggetto di visualizzazione, l'oggetto LoaderInfo risulta comunque accessibile come proprietà dell'oggetto di visualizzazione caricato mediante la proprietà loaderInfo dell'oggetto di visualizzazione. La proprietà loaderInfo dell'oggetto di visualizzazione caricato fa riferimento allo stesso oggetto LoaderInfo della proprietà contentLoaderInfo dell'oggetto Loader. In altre parole, un oggetto LoaderInfo è condiviso da un file di oggetto caricato e dall'oggetto Loader che lo ha caricato. Per accedere alle proprietà del contenuto caricato, è necessario aggiungere un listener di evento all'oggetto LoaderInfo, come nel codice seguente: 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;
}
Per ulteriori informazioni, vedete Gestione degli eventi. Impostazione del contesto di caricamentoQuando caricate un file esterno in Flash Player mediante il metodo load() o loadBytes() della classe Loader, potete eventualmente specificare un parametro context. Tale parametro è un oggetto di LoaderContext. La classe LoaderContext include tre proprietà che consentono di definire il contesto di utilizzo del contenuto caricato:
Di seguito è riportato un esempio di controllo di un file di criterio nel corso del caricamento di una bitmap da un altro dominio: 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);
Segue un esempio di verifica di un file dei criteri dei domini durante il caricamento di un file SWF da un altro dominio, al fine di collocare il file nella stessa funzione di sicurezza sandbox dell'oggetto Loader. Inoltre, il codice inserisce le classi del file SWF caricato nello stesso dominio applicazione dell'oggetto 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);
Per ulteriori informazioni, vedete la classe LoaderContext in ActionScript 3.0 Reference for the Adobe Flash Platform (Guida di riferimento di Adobe ActionScript 3.0 per la piattaforma Adobe Flash). |
|