Ciao a tutti...
sto scrivendo una classe per gestire i file xml in actionscript ed avevo bisogno di alcuni chiarimenti...
posto prima il codice (ancora incompleto) e poi i miei dubbi, se qualcuno avrà voglia di rispondermi...
class gestoreXML {
static var xmlHandler:XML = new XML();
private var xmlFile:String;
static var allSlides = new Array();
public var s;
static var xmlLoaded;
function gestoreXML(s_xmlFile:String)
{
xmlLoaded = false;
xmlHandler.ignoreWhite = true;
xmlHandler.onLoad=parse;
setXmlFile(s_xmlFile);
caricaXML();
}
private function setXmlFile(s_xmlFile:String)
{
xmlFile = s_xmlFile;
}
public function getXmlFile(s_xmlFile:String)
{
return (xmlFile);
}
private function caricaXML()
{
xmlHandler.load("eventi.xml");
}
public function getXml()
{
if (xmlLoaded == true) {
trace ("AS" + allSlides);
return allSlides;
} else {
trace ("xml non ancora caricato");
}
}
public function xmlIsLoaded()
{
return (xmlLoaded);
}
public function setXmlLoaded()
{
xmlLoaded = true;
}
private function parse(success){
if (!success) {
trace("errore da gestire");
return;
}
var slides = xmlHandler.childNodes[0].childNodes;
for (var s=0; s<slides.length; s++) {
var thisData = new Object();
var nodesInSlide=slides[s].childNodes.length;
for (var n=0; n<nodesInSlide; n++) {
var thisNodeName=slides[s].childNodes[n].nodeName.toUpperCase();
var theVal=slides[s].childNodes[n].firstChild.nodeValue;
thisData[slides[s].childNodes[n].nodeName]=theVal;
}
allSlides[s]=thisData;
}
xmlLoaded = true;
}
}
i miei dubbi riguardano lo scope della funzione parse, che non riesce ad accedere ai metodi ed alle variabili della classe che non siano static.
il problema penso sia nel metodo di chiamata alla funzione, cioè xmlHandler.onLoad=parse;
ma sinceramente non avrei idea di come metterlo diversamente...
quello che mi sembra succeda è che parse diventi "figlio" di xmlHandler è che quindi non condivida lo spazio dei nomi con la classe, non riesco neanche a referenziarli tramite _parent...
qualche consiglio?
p.s. (se qualcuno fosse interessato a questa classe una volta completata puoi mandarmi un messaggio che gliela mando volentieri!!! )