D'ough! (diria Homero). Es cierto, habia copiado la funcion anterior tal como la tenia y por eso necesitaba el cast. Mi error.
Ahora, en el XmlLoaded2 (listener del event ProgressEvent) tengo esto:
Código :
if (e.bytesLoaded >= e.bytesTotal) {
_xml = new XML(e.target.data);
variableflag = true;
trace("se cargo");
} else {
trace("no se cargo");
variableflag = false;
}
En realidad ahi siempre responde que se cargo. Supongo que porque el archivo XML es de poco tamaño.
Sin embargo, instanciando la clase en el FLA y tratando acceder a un metodo que deberia devolverme el xml tal como quisiera hacerlo, no funciona, devuelve null. Asi:
var miclase:retornaXML = new retornaXML;
trace("elXML:" + miclase.elXML);
hasta ahora mi codigo seria mas o menos asi:
Código :
package {
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.events.*;
import flash.events.ProgressEvent;
public class retornaXML {
private var _xml:XML = new XML();
private var variableflag:Boolean = false;
public function retornaXML() {
cargarXML();
}
private function cargarXML():void {
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, xmlLoaded);
loader.addEventListener(ProgressEvent.PROGRESS, xmlLoaded2);
loader.load(new URLRequest("LocalData.xml"));
}
private function xmlLoaded(e:Event):void {
_xml = new XML(e.target.data);
trace("trace en loaded: " + _xml);
// A partir de aqui ya puedes utilizar _xml
// en cualquier punto del programa
}
private function xmlLoaded2(e:ProgressEvent):void {
//_xml = new XML(e.target.data);
trace("trace en el progress: " + e);
if (e.bytesLoaded >= e.bytesTotal) {
_xml = new XML(e.target.data);
} else {
trace("no se cargo");
variableflag = false;
}
}
public function get elXML():XML {
return _xml;
//aca deberia chequear el flag? y volver a llamar la funcion si es false? como?
}
}
}
Si me pueden dar otra mano, eternamente agradecido.