Indipendentemente da come è fatta la tua classe, non puoi comunque chiamare una funzione che avvia il caricamento di un contributo esterno e aspettarti che questa possa restituirne il valore. Devi chiamare una funzione che avvia il caricamento, e predisporne un'altra che viene chiamata a caricamento ultimato.
Detto questo, c'era qualche errore, soprattutto quel
XmlDataA = Array();
codice:
this.stop();
var SiteVars:ReadXmlData = new ReadXmlData();
SiteVars.SetFileToLoad("miodoc.xml");
SiteVars.SetCategory("elemento");
var listener = new Object();
listener.loaded = function(evt)
{
Gino = evt.content;
trace(Gino[0][0]);
}
SiteVars.addEventListener("loaded", listener);
SiteVars.ReadData();
codice:
import mx.events.EventDispatcher
class ReadXmlData{
static var initialized = EventDispatcher.initialize(ReadXmlData.prototype);
static var evtDispatcher = EventDispatcher;
public var XmlUrl:String,
XmlDataA:Array,
XmlCategory:String,
addEventListener : Function;
private var dispatchEvent : Function;
//Costruttore
function ReadXmlData(){
XmlDataA = new Array();
}
//Funzione che setta il file XML di origine dati
public function SetFileToLoad(XmlUrl:String):Void{
this.XmlUrl = XmlUrl;
}
//Funzione che imposta la categoria da leggere nel file XML
public function SetCategory(XmlCategory:String):Void{
this.XmlCategory = XmlCategory;
}
//Funzione che legge i dati dal file XML e ne restituisce l'array,
public function ReadData(){
var XmlData:XML = new XML();
XmlData.ignoreWhite = true;
var path:ReadXmlData = this;
XmlData.onLoad = function(success){
if(success){
var base:XMLNode = this.childNodes[0];
//controllo se è stata impostata una categoria, nel qual caso seleziono i dati della categoria selezionata
if(path.XmlCategory != "" || path.XmlCategory != null){
var Section:Number = new Number(0);
//Scorro il file xml
for(var i:Number = 0;i < base.childNodes.length;i++){
//Se trovo il nodo con il nome della categoria scelta, mi salvo l'id del nodo
if(base.childNodes[i].nodeName == path.XmlCategory){
Section = i;
}
}
//Reimposto il path base con l'aggiunta del nuovo nodo
base = base.childNodes[Section];
}
for(var i:Number = 0;i < base.childNodes.length;i++){
var sub:XMLNode = base.childNodes[i];
path.XmlDataA[i] = Array();
for(var j:Number = 0; j < sub.childNodes.length; j++){
//Inserisco le informazioni nell'array
path.XmlDataA[i][j] = sub.childNodes[j].nodeValue;
}
}
path.dispatchEvent({type:"loaded", content:path.XmlDataA});
//return XmlDataA;
}
}
XmlData.load(XmlUrl);
};
}