Comunidad de diseño web y desarrollo en internet online

Problema Function y Variables

Citar            
MensajeEscrito el 31 Ago 2016 07:38 pm
Hola!
Con mi hermano estamos haciendo un flash que compare datos obtenidos desde un XML. Hicimos el siguiente código de prueba para ver si podíamos identificar correctamente las etiquetas del XML:

Código :

// IMPORTS
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.*;

// VARS 
var _loader:URLLoader;
var _xml:XML;
var Jug_A:String;

_loader = new URLLoader();
_loader.load(new URLRequest("prueba.xml"));
_loader.addEventListener(Event.COMPLETE, cargarXML);
//
function cargarXML(e:Event):void
{
_xml = new XML(e.target.data);
leerXML(_xml);
}
//---------- FUNCION LECTURA DE DATOS -------------
function leerXML(datos:XML):void
{
var JugA_list:XMLList = datos.Resultado.JugadorA;

//
for (var i:int = 0; i < JugA_list.length(); i++) {
Jug_A = JugA_list[i];
}
}
trace(Jug_A);


Sin embargo el resultado que nos aparece dice "null".
Cuando colocamos el trace(Jug_A); detro de la llave del function leerXML, nos entrega el último nombre que esta en el JugA_list. Al parecer al llamar a la variable fuera de la función hace que los datos que tenia registrados desaparescan... ¿cómo puedo hacer para que mantenga los datos y pueda usar la variable fuera de la funcion?

les agradesco su ayuda

Por KAY0

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Sep 2016 09:25 pm
Es muy importante que entiendas el concepto de scope y la forma en que se ejecuta un callback, que son los dos problemas que tienes. Para empezar muy simple vamos a decir esto: una variable existe dentro de una funcion o dentro de la línea de tiempo. A existe en la línea de tiempo (y dentro de cada función), B solo dentro de la función.

Luego tu trace se ejecuta antes de la función, con lo cual aunque hubieras usado una variable de línea de tiempo (A en el ejemplo) igual hubiuera dado null

Código ActionScript :

var A:Number;
function mifunction(){
  var B:number
   trace("Hago función")
}
trace("Hago");
mifunction();


En tu ejemplo, declara la variable afuera de la función

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Nov 2017 02:41 pm
Luego de dos meses repetimos el mismo POST?
Tu problema es de scope, llama a otra funcion y pásale los datos, si le quieres pasar la lista entera le pasas JugA_list, si quieres que la variable se accesible fuera de la funcion, declarala fuera, ej

Código ActionScript :

var JugA_listXMLList:XMLList;

function leerXML(datosXML)void{
    JugA_listXMLList = datos.Resultado.xxxx
   ....
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.