Volledige versie bekijken : veranderen van variabele bij ingeladen .swf
carl09
%Europe/Berlin %774 %2008, 19:35
Ik ben nieuw in AS3 en heb geen idee hoe ik dit kan doen.
Eerst importeer ik een viewer (deze is ook in AS3) die verwijst naar een xml file doormiddel van:
var XMLReq:URLRequest = new URLRequest("imageURLs.xml");
maar indien ik op een button klik zou ik graag dit veranderen, bv met:
var XMLReq2:URLRequest = new URLRequest("imageURLs2.xml");
en dan iets in de aard van:
XMLReq = XMLReq2;
Maar heb geen idee hoe ik deze variabele zou kunnen veranderen in een ingeladen .swf
De volgende code is hoe ik de viewer inlaad.
import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.URLRequest;
var myMC:MovieClip = new MovieClip();
stage.addChild(myMC);
var myLoader:Loader = new Loader( );
myLoader.load(new URLRequest("viewer.swf"));
myMC.addChild(myLoader);
Maar hoe kan ik nu die variabele veranderen in de viewer.swf indien ik op een knopke duw.
Alvast bedankt.
Carl
TheDutch
%Europe/Berlin %839 %2008, 21:08
Kijk in de LiveDocs bij de Loader class en dan via "contentLoaderInfo" naar de LoaderInfo class :).
carl09
%Europe/Berlin %845 %2008, 21:18
bedankt voor de reactie,
maar ik kan er precies niet zo goed aan uit.
Is het mogelijk om een simpel voorbeeldje te geven hoe je dan deze variabele kan veranderen?
mknol
%Europe/Berlin %053 %2008, 02:17
Je kunt in principe met 1 URLRequest uit de voeten, lijkt me.
Op het moment dat je een andere xml wilt laden, is de eerste al klaar, dus dat zou dan zoiets worden
var XMLReq:URLRequest = new URLRequest("imageURLs.xml");
// en even later in de code
XMLReq = new URLRequest("AndereXML.xml");
Wat jij wilt is denk ik dit:// zet sprite (genaamd mySprite) uit de loader (de geladen .swf in jouw geval) op onzichtbaar
myLoader.loaderInfo.content.mySprite.visible = false;
Daarbij verwijst myLoader.loaderInfo.content dus naar de inhoud van de .swf. Vanaf dat punt kun je dus ook variablen aanspreken.
carl09
%Europe/Berlin %689 %2008, 17:32
nee, het probleem is dat de xml wordt geloaden in de viewer.swf
En deze variabele zou ik willen kunnen veranderen vanuit de container .fla indien ik op een knopje duw.
Ik kan natuurlijk verschillende viewers maken viewer1.swf, viewer2.swf die elk een andere xml oproept en als ik op een button duw naar een andere viewer verwijzen maar dat lijkt me een idiote copying terwijl ik enkel 1 variabele moet veranderen.
Dus is het niet mogelijk om deze variabele te veranderen vanuit de container? en kan ik daar een voorbeeldje van krijgen.
Echt bedankt voor de hulp !!
mknol
%Europe/Berlin %841 %2008, 21:11
Vanuit de container kun je de variable in de .swf zo aanroepen:myLoader.loaderInfo.content.variabelNaam = "nieuwe waarde"
carl09
%Europe/Berlin %461 %2008, 12:05
Ik krijg dan een error:
Access of possibly undifined property XMLReq through a reference with static type flash.display: DisplayObject
Enig idee?
carl09
%Europe/Berlin %465 %2008, 12:09
Dit is de code die ik nu heb:
import flash.display.MovieClip;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.net.URLRequest;
var myMC:MovieClip = new MovieClip();
stage.addChild(myMC);
var myLoader:Loader = new Loader( );
myLoader.load(new URLRequest("viewer.swf"));
myLoader.loaderInfo.content.XMLReq = new URLRequest("imageURLs2.xml"); myMC.addChild(myLoader);
In de viewer wordt XMLReq gedefineerd als:
var XMLReq:URLRequest = new URLRequest("imageURLs.xml");
carl09
%Europe/Berlin %099 %2008, 03:23
iemand een idee waarom ik die static error krijg?
Bedankt om te helpen
mknol
%Europe/Berlin %972 %2008, 00:20
Graag niet 3x je onderwerp bumpen, voeg je aanpassingen gewoon in je laatste topic toe.
Ook is het handig om te vermelden welke error je krijgt, wat je in de tussentijd getraced hebt, en welke output je daarop krijgt.
Het helpt misschien om de help-documentatie of de adobe livedocs door te nemen. Hier staat precies wat loaderInfo.content doet en welke content het bevat, en hoe je hiermee content kunt aanroepen.
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.