Scherminhoud dynamisch ladenFlash Player 9 of hoger, Adobe AIR 1.0 of hoger U kunt de volgende externe weergave-elementen in een ActionScript 3.0-toepassing laden:
U laadt deze elementen met de klasse Loader. Weergaveobjecten ladenMet een object Loader kunt u SWF-bestanden en bestanden met afbeeldingen in een toepassing laden. De klasse Loader is een subklasse van de klasse DisplayObjectContainer. Een object Loader kan slechts één onderliggend weergaveobject in het weergaveoverzicht bevatten, namelijk het weergaveobject dat het SWF-bestand of afbeeldingsbestand vertegenwoordigt dat door het object wordt geladen. Wanneer u een object Loader aan het weergaveoverzicht toevoegt, zoals in de volgende code, voegt u ook het geladen onderliggende weergaveobject aan het weergaveoverzicht toe zodra het is geladen: var pictLdr:Loader = new Loader(); var pictURL:String = "banana.jpg" var pictURLReq:URLRequest = new URLRequest(pictURL); pictLdr.load(pictURLReq); this.addChild(pictLdr); Wanneer het SWF-bestand of de afbeelding is geladen, kunt u het geladen weergaveobject naar een andere weergaveobjectcontainer verplaatsen, zoals het DisplayObjectContainer-object container in dit voorbeeld: 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); } De voortgang van het laden controlerenWanneer het bestand met laden begint, wordt er een object LoaderInfo gemaakt. Een object LoaderInfo biedt bijvoorbeeld informatie over de voortgang van het laden, de URL's van de lader en geladen inhoud, het totale aantal bytes voor de media en de nominale hoogte en breedte van de media. Een object LoaderInfo verzendt ook gebeurtenissen voor het controleren van de voortgang van het laden. Het volgende diagram toont de verschillende manieren waarop het object LoaderInfo kan worden gebruikt (voor de instantie van de hoofdklasse van het SWF-bestand, voor een object Loader en voor een object dat is geladen door het object Loader): U hebt toegang tot het object LoaderInfo als een eigenschap van zowel het object Loader en het geladen weergaveobject. Wanneer het laden begint, hebt u toegang tot het object LoaderInfo via de eigenschap contentLoaderInfo van het object Loader. Zodra het laden van het weergaveobject is voltooid, hebt u via de eigenschap loaderInfo van het weergaveobject ook toegang tot het object LoaderInfo als een eigenschap van het geladen weergaveobject. De eigenschap loaderInfo van het geladen weergaveobject verwijst naar hetzelfde object LoaderInfo als de eigenschap contentLoaderInfo van het object Loader. Een object LoaderInfo wordt dus gedeeld tussen een geladen object en het object Loader dat het object heeft geladen (tussen lader en de geladen inhoud). Als u toegang wilt tot de eigenschappen van de geladen inhoud, moet u een gebeurtenislistener toevoegen aan het object LoaderInfo, zoals getoond in de volgende code: 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; } Zie Gebeurtenissen afhandelen voor meer informatie. De context van de geladen gegevens opgevenWanneer u via de methode load() of loadBytes() van de klasse Loader een extern bestand in Flash Player of AIR laadt, kunt u eventueel een parameter context opgeven. Deze parameter is een object LoaderContext. De klasse LoaderContext bevat drie eigenschappen waarmee u kunt definiëren hoe de geladen inhoud wordt gebruikt:
In het volgende voorbeeld ziet u hoe u naar een beleidsbestand zoekt tijdens het laden van een bitmap uit een ander domein: 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); In het volgende voorbeeld ziet u hoe u naar een beleidsbestand zoekt tijdens het laden van een SWF-bestand uit een ander domein, zodat u het bestand in dezelfde beveiligingssandbox als het Loader-object kunt plaatsen. Bovendien voegt de code de klassen in het geladen SWF-bestand toe aan hetzelfde toepassingsdomein als het Loader-object: 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); Zie de LoaderContext-klasse in de Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform voor meer informatie. |
![]() |