Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/06/2009, 16:48
Avatar de darkgaze
darkgaze
 
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 9 meses
Puntos: 2
Exclamación AS3. ¿Por qué cambiar una variable dentro de un listener no hace nada?

Hola gente.

Estoy liadísima, esto no me cuadra.

Estoy tratando de modificar una variable de clase:

private var pepe:String;



Dentro de un evento listener. En este caso, un evento que me avisa de que se ha cargado un XML. Ese xml lo quiero guardar como string o como sea, me da igual, en esta variable.

Pero cuando hago print dentro, sí sale, cuando hago el trace(pepe) fuera de esta función sale "NULL".


Eso significa que las variables no tienen el mismo ámbito... es como si estuviera modificando otra cosa.


Aquí está el código. Qué demonios hay que hacer para poder modificar esa variable??? absolutamente TODOS los tutoriales en todos los libros y en internet hacen el ejemplo con un TRACE dentro del listener. PERO no hay ningún ejemplo que modifique algo de fuera, a menos que sea una propiedad del target, así que no puedo entender.


Código:
package{

	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.*;

	public class Main extends Sprite {

		var datos:XML;

		public function Main() {
			cargarXML("xml.xml");
			trace(datos);
		}

	   function cargarXML(ruta:String):void {
			var loader:URLLoader = new URLLoader();
			loader.addEventListener(Event.COMPLETE, cargaCompletada);
			loader.load(new URLRequest(ruta));
		}

	   function cargaCompletada(event:Event):void {
			try {
				datos = new XML(event.target.data);
			} catch (e:TypeError) {
				trace("Error en el parseado de XML");
				trace(e.message);
			}
		}
		
	}

}

Lo que sale es NULL. O sea, que datos se modifica dentro del listener (y funciona, si) pero fuera desaparece!!
__________________
Darkgaze