Comunidad de diseño web y desarrollo en internet online

loop a datos de xml a flash cs3

Citar            
MensajeEscrito el 14 Nov 2008 07:08 pm
hola estoy migrando de actionscript 2 al 3 esta buenisimo el 3.0 tengo un codigo que quiero que cargue todos los datos del xml a una caja de texto en flash y me muestre todos los datos, en el 2 no habia problemas, pero resulta que al migrarlo al 3 la caja de texto solo me muestra un solo dato del xml y no los 2 que tengo, ni siquiera puedo duplicar los movieclips dependiendo el numero de datos del xml pero tampoco jala, no se que puede faltarme, si me falta declarar algo, les paso mi codigo:


este es mi archivo xml llamado noticias.xml:

Código :

<?xml version="1.0" encoding="ISO-8859-1"?>
<noticias>
   <historia>
       <imagen>t2.jpg</imagen>
        <titulo>Noticia 1</titulo>
           <fecha>Noviembre 14 2008</fecha>
            <cuerpo>Esto es la primera noa para la prueba de flash y xml</cuerpo>
    </historia>
    <historia>
<imagen>t3.jpg</imagen>
        <titulo>Noticia 2</titulo>
           <fecha>Noviembre 5 2008</fecha>
            <cuerpo>Esto es la segunda parte de la noticia creada</cuerpo>
    </historia>
</noticias>




y este es mi codigo del flash

Código :

var carga:URLLoader = new URLLoader();
carga.addEventListener(Event.COMPLETE, xml);
carga.load(new URLRequest("noticias.xml"));
function xml(e:Event):void {
XML.ignoreWhitespace = true; 
var notas:XML = new XML(e.target.data);
trace(notas.historia.length());
var i:Number;
var contenido:String
for (i=0; i < notas.historia.length(); i++) {

contenido = "<img src='"
contenido += notas.historia[i].imagen;
contenido +="' width='30' height='45'/><b>"
contenido += notas.historia[i].titulo;
contenido +="</b> -<i>";
contenido +=notas.historia[i].fecha;
contenido +="</i>\n";
contenido +=notas.historia[i].cuerpo;
contenido +="\n\n\n"
trace(contenido)
}
texto.htmlText=contenido
}


solo me muestra noticia 2 y la noticia 1 no se visualiza en el campo de texto

Por ipalmeros

45 de clabLevel



 

msie
Citar            
MensajeEscrito el 15 Nov 2008 09:38 am
Te falta un nodo para que historias sea un array, algo así:

Código :

<?xml version="1.0" encoding="ISO-8859-1"?>
<noticias>
   <items>
   <historia>
       <imagen>t2.jpg</imagen>
        <titulo>Noticia 1</titulo>
           <fecha>Noviembre 14 2008</fecha>
            <cuerpo>Esto es la primera noa para la prueba de flash y xml</cuerpo>
    </historia>
    <historia>
<imagen>t3.jpg</imagen>
        <titulo>Noticia 2</titulo>
           <fecha>Noviembre 5 2008</fecha>
            <cuerpo>Esto es la segunda parte de la noticia creada</cuerpo>
    </historia>
  </items>
</noticias>


Luego ya si lo recorres de a uno:

Código ActionScript :

var l:Number = myXML.items.historia.length()
for(var i:Number=0; i<l; i++){
   trace(myXML.items.historia[i].titulo)
       .....
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Nov 2008 12:27 pm
Hola de nuevo Jorge, gracias por tu ayuda, te voy a pedir una disculpa enorme de antemano, me falto una ultima explicacion, que lo voy a mencionar a continuacion, tu codigo funciona perfecto, en trace me hace loop a los datos del xml, pero en el campo de texto me sigue mostrando solo uno, me pasa lo mismo a mi con mi otro codigo, que les pase, me hace loop de los datos del xml en trace pero en el campo de texto no me lo hace solo me muestra uno, y no tengo idea de que pueda ser, muchas gracias de nuevo

Por ipalmeros

45 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Nov 2008 02:05 pm
A la segunda pasada, esto sobreescribe lo anterior:

contenido = "<img src='"

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Nov 2008 03:24 pm
Hola de nuevo Jorge, no me ha funcionado aun, :) le he dado vueltas al asunto y nada solo me hace el loop en el trace pero en la caja de texto aun me sigue dando problemas, temando estas imagenes del codigo y del resultado impreso de ese codigo, lo simplifique mas y aun asi no me lo genera


Codigo
Impresion de los resultados


Todo funciona bien en el trace pero en el campo de texto nop gracias de nuevo

Por ipalmeros

45 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Nov 2008 11:15 pm
Lo que quiero decir es que tiene que decir

Código ActionScript :

contenido = ""
for (i=0; i < notas.historia.length(); i++) {
   contenido += "<img src='"
   contenido += notas.historia[i].imagen;
   contenido +="' width='30' height='45'/><b>"
   contenido += notas.historia[i].titulo;
   contenido +="</b> -<i>";
   contenido +=notas.historia[i].fecha;
   contenido +="</i>\n";
   contenido +=notas.historia[i].cuerpo;
   contenido +="\n\n\n"
}


Nota que la primera línea del loop tiene un += , eso evitará que lo sobreescribas en cada pasada

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Nov 2008 01:21 am
ok, muchas gracias Jorge, salio todo bien, muchas gracias de nuevo :)

Por ipalmeros

45 de clabLevel



 

firefox

 

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