Comunidad de diseño web y desarrollo en internet online

Cargar varias noticias seguidas en cuadro de texto dinámico desde XML

Citar            
MensajeEscrito el 27 Abr 2011 04:38 am
Buenas, soy nuevo en el foro asi que cualquier cosa que ponga mal porfavor avisenme y lo cambio.

Les cuento mi problema. (les aclaro que soy bastante novato en esto)

tengo en una web (www.balletydescontrol.com.ar) hecha en flash un talón donde se cargan noticias desde un archivo xml, el tema es que el campo de texto me muestra solo una noticia y mi intención es que cargue las siguientes noticias a continuación.

El código que usé lo saqué de un ejemplo de por ahí y lo modifiqué como mejor me servía..

Cada noticia cuenta con Titulo, mensaje y fecha

bueno les pego el codigo en mi pelicula flash que carga ese xml

Código ActionScript :

//Permite caracteres tradicionales como letras con tilde la ñ, etc.
System.useCodepage = true;
//Se declara la variable indice de tipo número (utilizada para referencia la noticia a mostrar)
var indice:Number;
//Se declara la variable noticias_xml de tipo XML (utilizada para almacenar el documento xml)
var news_xml:XML;
/*
Funcion cargarDatos (utilizada para cargar y cambiar las noticias en el documento)
Esta función recibe un parámetro "_indice" que corresponde al elemento noticia  a mostrar
*/
function cargarDatos(_indice:Number) {
        //Se inicializan variables utilizadas para almenar los datos de una noticia
        var fecha:String;
        var titulo:String;
        var mensaje:String;
        //Recuperando datos del objeto xml
        //Se accede al primer elemento [noticia] y se recupera la fecha desde el atributo [fecha]
        fecha = news_xml.firstChild.childNodes[_indice].attributes.fecha;
        //Se accede al primer hijo de elemento [noticia] y se recupera al valor del primer elemento de [titulo]
        titulo = news_xml.firstChild.childNodes[_indice].firstChild.firstChild.nodeValue;
        //Se accede al segundo hijo de elemento [noticia] y se recupera el valor del primer elemento de [mensaje]
        mensaje = news_xml.firstChild.childNodes[_indice].firstChild.nextSibling.firstChild.nodeValue;
        //Se accede al último hijo de elemento [noticia] y se recupera el valor del primer elemento de [imagen]
        imagen = news_xml.firstChild.childNodes[_indice].lastChild.firstChild.nodeValue;
        //Mostrando los datos recuperados en el cuado de texto mensaje_txt y cargando la imagen en pantalla_mc
        _root.mensaje_txt.htmlText = "";
        _root.mensaje_txt.htmlText += "<p align='left'><font color='#222222' size='12'><b>"+titulo+"</b></font></p>";
        _root.mensaje_txt.htmlText += "<p><font size='11'>"+mensaje+"</font>";
        _root.mensaje_txt.htmlText += "<font color='#999999' size='10'>Publicado: "+fecha+"</font></p>";
}
//Inicializaciones
indice = 0;
//inicializando indice en 0 para mostrar la primera noticia
//creando el objeto noticias_xml de typo XML
news_xml = new XML();
//Permite que el objeto XML ignore los espacios en blanco entre marca y marca del documento XML
news_xml.ignoreWhite = true;
//El método load() permite cargar el documento xml "noticias.xml"
news_xml.load("news.xml");
//El evento onLoad de activa cuado se haya cargado el documento noticias.xml
news_xml.onLoad = function() {
        //Se llama a la funcion cragarDatos para mostar la primera noticia (esto por la variable indice en 0)
        cargarDatos(indice);
};




y en mi archivo news.xml tengo

Código ActionScript :

<?xml version="1.0" encoding="iso-8859-1"?>
<noticias>
   <noticia fecha="27/09/2010"> 
      <titulo>Entrevista en "Duplex" LU2 - Radio Bahia Blanca!</titulo>
      <mensaje>Fuimos entrevistados por la gente de Duplex y en una charla interesante comntamos al público de que se trataba nuestro proyecto de la Cucha Indoor, podés escuchar la entrevista completa en nuestra secci'on de producto / cucha Indoor</mensaje>      
      <noticia fecha="20/09/2010"> 
      <titulo>Gran lanzamiento Web en Octubre!!</titulo>
      <mensaje>Nuestra nueva y mejorada web estara disponible a partir de los primeros dias de Octubre 2010. Con nuevas secciones y mucha info para que no te aburras y nosotros tampoco...</mensaje>      
   </noticia>
   


mi duda está en la parte que dice
indice = 0;
osea eso es para cargar el primer elemento, como hago para que después cargue el siguiente?
se pueden cargar más de una noticia en un mismo cuadro de texto dinámico?

Por ahí leí que la fucnción array puede hacer esto que estoy buscando yo, tipo que busque la primer noticia del archivo, la muestre, busque la siguiente y la muestre abajo y así sucesivamente....

Me resulta raro porque parece algo tan simple y me cansé de navegar la web sin encontrar soluciones...

Desde ya muchas gracias!

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

firefox
Citar            
MensajeEscrito el 27 Abr 2011 02:04 pm
Deberias recuperar cuantas noticias tienes y hacer un loop, algo así>

Código ActionScript :

news_xml.onLoad = function() { 
      var cant:int = news_xml.firstChild.childNodes.length;
      for(var i:int=0; i<cant; i++) cargarDatos(i); 
}; 


Luego quita que borre todo en cada noticia, esta línea de cargarDatos

_root.mensaje_txt.htmlText = "";

Cambiala a

if(_indice==0) _root.mensaje_txt.htmlText = "";

Así excepto la primera vez, lo otro se acumula

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Abr 2011 02:29 pm
Gracias Jorge!
hoy lo pruebo y les comento como anda

Slds

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 27 Abr 2011 06:17 pm
Probé los cambios y me devuelve un error de "The class or interface 'int' could not be loaded."

de estas dos lineas

Código :

var cant:int = news_xml.firstChild.childNodes.length; 
      for(var i:int=0; i<cant; i++) cargarDatos(i); 


y no se imprime ninguna noticia osea se ve completamente blanco, ni siquiera se imprime undefinded en cada campo

Perdón por mi ignoracia

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 27 Abr 2011 06:33 pm
Ponle Number

i:Number= .....

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Abr 2011 02:08 am
perdón no se bien en donde ponerlo...
sigo investigando

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 28 Abr 2011 03:52 am
bueno el codigo me quedó asi (igual no funciona)

agregé todo lo que mencionás Jorge pero no entiendo bien donde meter el i:Number= (cantidad de noticias)

busqué y encontré que se utiliza la sentencia

Código ActionScript :

var i:Number;
que es como para establecer la variable ...

Código ActionScript :

//Permite caracteres tradicionales como letras con tilde la ñ, etc.
System.useCodepage = true;
//Se declara la variable indice de tipo número (utilizada para referencia la noticia a mostrar)
var indice:Number;
//Se declara la variable noticias_xml de tipo XML (utilizada para almacenar el documento xml)
var news_xml:XML;
/*
Funcion cargarDatos (utilizada para cargar y cambiar las noticias en el documento)
Esta función recibe un parámetro "_indice" que corresponde al elemento noticia  a mostrar
*/
function cargarDatos(_indice:Number) {
        //Se inicializan variables utilizadas para almenar los datos de una noticia
        var fecha:String;
        var titulo:String;
        var mensaje:String;
        //Recuperando datos del objeto xml
        //Se accede al primer elemento [noticia] y se recupera la fecha desde el atributo [fecha]
        fecha = news_xml.firstChild.childNodes[_indice].attributes.fecha;
        //Se accede al primer hijo de elemento [noticia] y se recupera al valor del primer elemento de [titulo]
        titulo = news_xml.firstChild.childNodes[_indice].firstChild.firstChild.nodeValue;
        //Se accede al segundo hijo de elemento [noticia] y se recupera el valor del primer elemento de [mensaje]
        mensaje = news_xml.firstChild.childNodes[_indice].firstChild.nextSibling.firstChild.nodeValue;
        //Se accede al último hijo de elemento [noticia] y se recupera el valor del primer elemento de [imagen]
        imagen = news_xml.firstChild.childNodes[_indice].lastChild.firstChild.nodeValue;
        //Mostrando los datos recuperados en el cuado de texto mensaje_txt y cargando la imagen en pantalla_mc
        if(_indice==0) _root.mensaje_txt.htmlText = ""; 
        _root.mensaje_txt.htmlText += "<p align='left'><font color='#222222' size='12'><b>"+titulo+"</b></font></p>";
        _root.mensaje_txt.htmlText += "<p><font size='11'>"+mensaje+"</font>";
        _root.mensaje_txt.htmlText += "<font color='#999999' size='10'>Publicado: "+fecha+"</font></p>";
}
//Inicializaciones
indice = 0;
//inicializando indice en 0 para mostrar la primera noticia
//creando el objeto noticias_xml de typo XML
news_xml = new XML();
//Permite que el objeto XML ignore los espacios en blanco entre marca y marca del documento XML
news_xml.ignoreWhite = true;
//El método load() permite cargar el documento xml "noticias.xml"
news_xml.load("news.xml");
//El evento onLoad de activa cuado se haya cargado el documento noticias.xml
news_xml.onLoad = function() { 
      var cant:int = news_xml.firstChild.childNodes.length; 
      for(var i:int=0; i<cant; i++) cargarDatos(i);   
};


investigando un poco leí que la variable "int" que me da error es porque funciona con AS3 y yo mi flash lo tengo hecho con AS2. la verdad no pasé todo a AS3 ya que tenía que arreglar todo para que funcione correctamente y con AS2 la verdad que andaba muy bien...

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 28 Abr 2011 04:25 am
Seguramente en el único lugar donde dice int, que sería este:

Código ActionScript :

news_xml.onLoad = function() {  
      var cant:int = news_xml.firstChild.childNodes.length;  
      for(var i:int=0; i<cant; i++) cargarDatos(i);    
};


En ninguna otra parte de tu script dice int, con lo cual con el buscar de un editor de texto lo hubieras encontrado, luego entonces debe decir:

Código ActionScript :

news_xml.onLoad = function() {  
      var cant:int = news_xml.firstChild.childNodes.length;  
      for(var i:Number=0; i<cant; i++) cargarDatos(i);    
};


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Abr 2011 12:22 pm
Bueno genial, ya me carga nuevamente pero solo la primer noticia del xml

tendría que agregar algo en el Xml para que me detecte la cantidad de items o lo está recuperando de las Fechas?

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 28 Abr 2011 03:24 pm
Ostras, es que ya me he olvidado de la sintaxis de AS2, sería


Código ActionScript :

news_xml.onLoad = function() {   
      var cant:int = news_xml.firstChild.firstChild.childNodes.length;  
      for(var i:Number=0; i<cant; i++) cargarDatos(i);     
};


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Abr 2011 04:33 pm
Sos muy groso! ahora ya carga las 3 noticias que tengo en el Xml pero solo la primera la carga bien, las otras me carga todo como undefined... mmm

saludos

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 28 Abr 2011 04:35 pm
Mira que tengas bien el XML, lo puedes abrir en IE y ver si la estructura es correcta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Abr 2011 04:57 pm
perfecto!
revisé la estructura del Xml y probando agregué un </noticia> luego de cada noticia y ahora me muestra las primeras 2 noticias y la tercera no aparece directamente.. pero ya va re encaminado

Código ActionScript :

<?xml version="1.0" encoding="iso-8859-1"?>
<noticias>
    <noticia fecha="28/04/2011"> 
      <titulo>Nos vamos a PURO DISENO!!</titulo>
      <mensaje>Tenemos el orgullo de llevarnos nuestras Cuchas Indoor a la Rural del 19 al 25 de Mayo para que todos vengan a conocerlas. Si querés vender nuestras cuchas en tu local mandanos un mensaje a [email protected] y concertamos una reunión en la Feria</mensaje>
   </noticia>
   <noticia fecha="27/09/2010"> 
      <titulo>Entrevista en "Duplex" LU2 - Radio Bahia Blanca!</titulo>
      <mensaje>Fuimos entrevistados por la gente de Duplex y en una charla interesante contamos al publico de que se trataba nuestro proyecto de la Cucha Indoor</mensaje>      
   </noticia>
   <noticia fecha="20/09/2010"> 
      <titulo>Gran lanzamiento Web en Octubre!</titulo>
      <mensaje>Nuestra nueva y mejorada web estara disponible a partir de los primeros dias de Octubre 2010. Con nuevas secciones y mucha info para que no te aburras y nosotros tampoco...</mensaje>      
   </noticias>

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 28 Abr 2011 05:19 pm
Todo tag que abre tiene que cerrar, no cerraste el último de noticia. Valida siempre que el XML este bien formado abriendolo en el Explorer

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Abr 2011 06:05 pm
te entiendo, lo que pasa que en casa tengo mac, me lo voy a traer al trabajo asi lo pruebo
Slds

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 28 Abr 2011 11:51 pm
Mirá lo corregí, lo probé en chrome, firefox y explorer y no aparece ningún error en el xml, incluso agregé una noticia más para ver si era algún conflicto con la última noticia y nada, me aparecen solo 2...

este es el código del xml

Código ActionScript :

<?xml version="1.0" encoding="iso-8859-1"?>
<noticias>
    <noticia fecha="28/04/2011"> 
      <titulo>Nos vamos a PURO DISENO!!</titulo>
      <mensaje>Tenemos el orgullo de llevarnos nuestras Cuchas Indoor a la Rural del 19 al 25 de Mayo para que todos vengan a conocerlas. Si querés vender nuestras cuchas en tu local mandanos un mensaje a [email protected] y concertamos una reunión en la Feria</mensaje>
   </noticia>
   <noticia fecha="27/09/2010"> 
      <titulo>Entrevista en "Duplex" LU2 - Radio Bahia Blanca!</titulo>
      <mensaje>Fuimos entrevistados por la gente de Duplex y en una charla interesante contamos al publico de que se trataba nuestro proyecto de la Cucha Indoor</mensaje>      
   </noticia>
   <noticia fecha="20/09/2010"> 
      <titulo>Gran lanzamiento Web en Octubre!</titulo>
      <mensaje>Nuestra nueva y mejorada web estara disponible a partir de los primeros dias de Octubre 2010. Con nuevas secciones y mucha info para que no te aburras y nosotros tampoco...</mensaje>   
      </noticia>   
      <noticia fecha="10/09/2010"> 
      <titulo>hola master de la mafia</titulo>
      <mensaje>yo soy un master de acá a la nachi!</mensaje>   
      </noticia>   
   </noticias>

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 29 Abr 2011 01:43 am
El encoding tiene que ser UTF-8. Borra el cache del navegador antes de probar, quizas este tomando algo viejo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Abr 2011 02:44 am
sisi eso lo cambie..
bueno parece no funcionar, voy a seguir revisando el codigo aver si encuentro alguna cosa que no cuadre, por ahora igual me carga 2 lo cual no está mal

acá el resultado
http://www.balletydescontrol.com.ar/

Muchas Gracias Jorge por la mano y la buena onda!

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 29 Abr 2011 10:22 am
El XML lo carga bien ... lo que me parece es que no aparece porque no hay espacio ya que un textfield no agrega scroll automáticamente ... tendrías que ponerlo en un componente TextArea ... aunque viendo el espacio que tienen, con dos me parece bien

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 29 Abr 2011 11:02 pm
te entiendo, yo había pensado también en un textarea, de todas maneras el textfield lo hice bastante mas grande y lo moví para ver si aparecían las otras noticias y nada, la idea original era dejarlo donde esta ahora, y poner en el elemento de flash que sus bordes sean transparentes para que el texto aunque se salga del flash hacia abajo igual se siga viendo, pero por ahora estoy bien, después veré si pruebo con un text area

Gracias maestro

Por tardi

8 de clabLevel



Genero:Masculino  

Diseñador industrial

chrome
Citar            
MensajeEscrito el 28 Sep 2012 05:17 pm
hola tardi!
he seguido este post para hacer un panel de noticias, pero no consigo que pasen las notas
aperece y se queda en la número 2. en el tuyo sí hacía el cambio automático o eso depende de otro código?

Por raider33

55 de clabLevel



 

firefox

 

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