Volledige versie bekijken : Probleem met FlashVars in andere classe
y-h
%Europe/Berlin %728 %2010, 18:28
Ik wil FlashVars gebruiken om die variabele mee te geven aan een url. Die url wordt gebruikt om de XML te laden.
vb:
http://domein.nl/index.php?var=[flashvar]
Ik heb een document class en een class die de XML laadt. De FlashVars kan ik met onderstaande code correct ophalen:
public function getFlashVars(){
try {
var keyStr:String;
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
this.themeID = paramObj.themeID;
} catch (error:Error) {
tf.appendText(error.toString());
}
}
Dit is als ik het uitvoer in de document class. Maar ik wil dit juist uitvoeren in de XML class.
Dit staat in de document class:
public var w_oXML:XMLManager = new XMLManager();
Als ik de code om FlashVars op te halen in de XMLManager class uitvoer krijg ik een foutmelding:
1119: Access of possibly undefined property root through a reference with static type XMLManager.
Dit vind ik niet zo raar maar ik weet niet hoe ik het moet oplossen. Volgens mij kan ik namelijk die FlashVars niet meegeven aan de XMLManager class. Toch heb ik die FlashVars nodig in de XMLManager class voor de url.
Kan iemand me helpen?
Alvast bedankt..
marcvz
%Europe/Berlin %731 %2010, 18:33
Zolang ik met as3.0 werk heb ik nog nooit root gebruikt..
Volgens mij kun je dit gewoon weglaten.
Je kunt natuurlijk ook gewoon de url meegeven als parameter in de XMLManager constructor.
Ik maak ook altijd een aparte class om de xml mee te laden en/of de amf connectie mee te maken. Ik geef deze class altijd een connect method waar ik de url aan meegeef.
y-h
%Europe/Berlin %735 %2010, 18:39
Ik denk niet dat ik de url mee kan geven aan de XMLManager constructor.
Je bedoelt dus: ?
public var w_oXML:XMLManager = new XMLManager("http://url.nl/?var=" + themeID);
Want ik maak eerst een nieuwe XMLManager class aan. In de constructor van de document class voer ik pas de "getFlashVars" function uit. Dan is de variabele "themeID" dus nog leeg of 0.
marcvz
%Europe/Berlin %739 %2010, 18:45
public var w_oXML:XMLManager;
En in je constructor van je docclass
w_oXML = new XMLManager("http://url.nl/?var=" + themeID);
y-h
%Europe/Berlin %750 %2010, 19:00
Ja en dan in de constructor van XMLManager:
public function XMLManager(url){
// Maak verbinding met het XML bestand
urXml = new URLRequest(url);
// Instantier loader
ulXml = new URLLoader();
// Als het loaden klaar is xmlLoaded uitvoeren
ulXml.addEventListener(Event.COMPLETE, xmlLoaded);
// En uiteindelijke uitvoeren
ulXml.load(urXml);
}
Toch?
Alleen dan krijg ik bij het exporteren van mijn swf deze foutmelding:
TypeError: Error #1009: Kan geen eigenschap of methode benaderen via een verwijzing naar een object dat null is.
at c_memory()
c_memory is mijn document class.
En offline kan ie dan ook de url niet laden omdat de FlashVars er dan niet zijn.
marcvz
%Europe/Berlin %754 %2010, 19:06
TypeError: Error #1009: Kan geen eigenschap of methode benaderen via een verwijzing naar een object dat null is.
at c_memory()
Omdat themeID niet bestaat waarschijnlijk..
Je kunt toch gewoon een default waarde aan je url variable hangen en deze overschrijven als de flashvar beschikbaar is.
Zo moeilijk is het toch allemaal niet lijkt me?
y-h
%Europe/Berlin %757 %2010, 19:10
Was ik vergeten erbij te zetten:
themeID is nu standaard 1. Dan nog krijg ik dezelfde foutmelding.
Dit is nu de constructor van de document class:
public function c_memory() {
getFlashVars();
w_oXML = new XMLManager("http://hva.yorihak.nl/naturalis/game/getImages.php?themeID=" + themeID);
w_oXML.addEventListener("xmlLoaded", init_board);
w_oXMLQuestions.addEventListener("xmlQuestionsLoaded", f_XMLLoaded);
exitQuestion.addEventListener(MouseEvent.CLICK, f_removeQuestion);
wrongQuestion.addEventListener(MouseEvent.CLICK, f_showRightAnswer);
playTime.addEventListener(TimerEvent.TIMER, playTimer);
playTime.start();
}
En dit die van de XMLManager:
public function XMLManager(url){
// Maak verbinding met het XML bestand
urXml = new URLRequest(url);
// Instantier loader
ulXml = new URLLoader();
// Als het loaden klaar is xmlLoaded uitvoeren
ulXml.addEventListener(Event.COMPLETE, xmlLoaded);
// En uiteindelijke uitvoeren
ulXml.load(urXml);
}
marcvz
%Europe/Berlin %761 %2010, 19:16
Maar wat heb je aan je getFlashVars als je de url er hard inzet?
Als je 'Debug > debug Movie' doet krijg je trouwens een regelnummer bij je typeError.
Dan weet je gelijk om welk object het gaat..
y-h
%Europe/Berlin %766 %2010, 19:23
Er moet een themeID aan de url meegegeven worden. Zo weet het script welke XML getoond moet worden.
y-h
%Europe/Berlin %768 %2010, 19:26
Blijkt dus om numberOfItemsCounting:int = w_oXML.numberOfItems; te gaan.
Maar als ik dit stukje code pas uitvoer op het moment dat de XML geladen is krijg ik ook foutmeldingen:
1067: Implicit coercion of a value of type int to an unrelated type Class.
1188: Illegal assignment to class int.
marcvz
%Europe/Berlin %769 %2010, 19:28
Ja.. en dus?
Ik snap echt het probleem niet geloof ik..
Code uit 1 van mijn projecten
In de Docclass constructor:
var xmlPath:String = "xml/data.xml";
if (loaderInfo.parameters.xmlPath)
if (String(loaderInfo.parameters.xmlPath).length > 0)
xmlPath = loaderInfo.parameters.xmlPath;
w_oXML.load(xmlPath);
Load functie in XMLManager.
public function load(url:String):void
{
_loader = new URLLoader();
_loader.addEventListener(Event.COMPLETE, dataLoadedHandler, false, 0, true);
_loader.load(new URLRequest(url));
}
Heb de naam aangepast aan jou code.
marcvz
%Europe/Berlin %771 %2010, 19:30
Die post was trouwens een reply op
Er moet een themeID aan de url meegegeven worden. Zo weet het script welke XML getoond moet worden.
Je laatste post zie ik nu pas.
Maar die errors hebben volgens mij niets meer met flashvars te maken..
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.