PDA

Volledige versie bekijken : XML data uit een externe LaadXML class terugkrijgen


punch
%Europe/Berlin %727 %2009, 17:28
ik gebruik een class met de naam LaadXML om xml data in te lezen.
de class leest de xml file, dit is zichtbaar als ik een trace uitvoer in de LaadXML class
nu wil ik in de de main movie class van waaruit ik LaadXML aanroep de data gebruiken
bijvoorbeeld:
menuData:LaadXML = new LaadXML("xml/menu.xml");

ik dacht dan de data in menuData te hebben, maar dat is een LaadXML object als ik
trace(menuData) uitvoer.

ik wil de xml met de LaadXML ophalen om zo in mijn main movie verschillende XML bestanden te kunnen gebruiken voor de onderdelen binnen de website.
kan iemand me zeggen hoe ik de xml data vanuit LaadXML beschikbaar kan maken in de main movie class?

package punch.data{

import flash.display.*;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.xml.*;
import flash.errors.*;
import flash.events.*;

public class LoadXML extends MovieClip {
private var loader:URLLoader;
private var _XML:XML;
private var bytestotal:Number;
private var bytesloaded:Number;
private var theProgress:Number;

public function LoadXML(file:String){
loader = new URLLoader();
loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(new URLRequest(file));
}
private function onComplete(e:Event) {
try {
_XML = new XML(loader.data)
trace(_XML);
return _XML;
} catch(e:Error) {
trace("Error: " + e.message)
return;
}

loader.removeEventListener(Event.COMPLETE, onComplete);
}
private function onProgress(e:Event) {
bytestotal = e.target.bytesTotal;
bytesloaded = e.target.bytesLoaded;
theProgress = Math.round(bytesloaded/bytestotal);
trace(theProgress);
}
}
}

Dauntless
%Europe/Berlin %745 %2009, 17:54
Dit gaat niet. Je moet vanuit onComplete je eigen event dispatchen (of gebruik maken van een bestaand, zoals dus Event.COMPLETE) en daar moet je dan naar luisteren in je .fla.

Wat je nu hebt is eigenlijk dit:
var myValue = myFunction();

function myFunction()
{
myOtherFunction();
}
function myOtherFunction()
{
return "test";
}
De waarde wordt dus teruggegeven naar myFunction, maar niet naar myValue. Dit is ook niet mogelijk, aangezien je werkt met events.

punch
%Europe/Berlin %786 %2009, 18:53
oke, dank je
ik ben nog niet zo handig met 'eigen' event dispatchers dus ga dit wel in de main class voor de vershillende xml files doen

Nidd
%Europe/Berlin %386 %2009, 09:16
// Binnen de onComplete listener..
dispatchEvent(new Event(Event.COMPLETE));

// En waar je de data af wil vangen..
xmlLoader.addEventListener(Event.COMPLETE, completeFunction, false, 0, true);

Grtz,
Niels.

punch
%Europe/Berlin %632 %2009, 15:11
dus als ik het goed begrijp
gebruik ik dan xmlLoader.addEven.... in de class van waar ik LaadXML aanroep
Daar kan ik dan met de functie completeFunction de data gebruiken?