Lector de RSS en AS3

En esta oportunidad les presente mi primer ejemplo en ActionSript 3 al cual por motivos de tiempo no había hecho pruebas. Bueno como en un post anterior hablamos un Lector RSS en Flash con AS2, esta vez lo modificaremos y reescribiremos en AS3 con lo cual veremos que nuevas nos trae este nueva versión de ActionScript.

Como en el ejemplo anterior, utilizaremos la misma interfaz gráfica, es decir los campos de texto (txttitle, txtdescription y txtcontent), ojo que en este proyecto estamos utilizando Flash Professional 9 ActionScript 3.0 Preview para compilar nuestro movie.

El primer paso es hacer la carga del RSS que vamos a leer, antes utilizábamos la función load de la clase XML pero en esta ocasión utilizaremos URLRequest que sirve para cargar un archivo externo y URLLoader que sirve para verificar la carga del archivo, estas dos clases son parte del package flash.net.

  1. var rssURL:String = "http://blog.unijimpe.net/feed/";
  2. var rssXML:URLRequest = new URLRequest(rssURL);
  3. var myLoader:URLLoader = new URLLoader(rssXML);
  4. myLoader.addEventListener("complete", xmlLoaded);

En donde hemos agregado un listener para detectar que se ha cargado completamente el archivo, este listener ejecutará la función xmlLoaded la cual crearemos a continuación en donde parsearemos los datos del XML recién cargado.

Lo primero que haremos sera crear una variable del tipo XML, este tipo de variables a diferencia de AS2 ahora soporta XPath para navegar en la estructura del XML con lo cual solo colocamos el nombre del nodo al que deseamos acceder y obtendremos el dato requerido. Además el tipo de variable XML tiene una propiedad llamada child con la cual podemos acceder a un determinado nodo, según la estructura del RSS dentro del primer nodo se encuentra toda la data, veamos nuestro código.

  1. function xmlLoaded(evtObj:Event) {
  2.     var rss:XML = new XML(myLoader.data);
  3.    
  4.     var vtit:String = rss.child(0).title;
  5.     var vurl:String = rss.child(0).link;
  6.     var vdes:String = rss.child(0).description;
  7.     var vcon:String = "";
  8.    
  9.     for each (var nodo:XML in rss..item) {
  10.         vcon += "<a href='"+nodo.link+"'><b>"+nodo.title;
  11.         vcon += "</b></a><br>"+nodo.description+"<br><br>";
  12.     }
  13.     txttitle.htmlText = "<a href='"+vurl+"'>"+vtit+"</a>";
  14.     txtdescription.text = vdes;
  15.     txtcontent.htmlText = vcon;
  16. }

Como se puede observar ahora se tiene una nueva forma de iterar for each como en otros lenguajes de programación el cual permite recorrer todos los elementos de un objeto, en este caso recorremos todos los nodos del XML que tengan el nombre item. Todos los datos los guardamos en cuatro variables las cuales al final lo asignamos a los textfield de nuestro flash.

Finalmente uniendo todas las piezas obtendremos.

  1. var rssURL:String = "http://blog.unijimpe.net/feed/";
  2. var rssXML:URLRequest = new URLRequest(rssURL);
  3. var myLoader:URLLoader = new URLLoader(rssXML);
  4. myLoader.addEventListener("complete", xmlLoaded);
  5.  
  6. function xmlLoaded(evtObj:Event) {
  7.     var rss:XML = new XML(myLoader.data);
  8.    
  9.     var vtit:String = rss.child(0).title;
  10.     var vurl:String = rss.child(0).link;
  11.     var vdes:String = rss.child(0).description;
  12.     var vcon:String = "";
  13.    
  14.     for each (var nodo:XML in rss..item) {
  15.         vcon += "<a href='"+nodo.link+"'><b>"+nodo.title;
  16.         vcon += "</b></a><br>"+nodo.description+"<br><br>";
  17.     }
  18.     txttitle.htmlText = "<a href='"+vurl+"'>"+vtit+"</a>";
  19.     txtdescription.text = vdes;
  20.     txtcontent.htmlText = vcon;
  21. }

A continuación les dejo el ejemplo compilado y funcionando, en donde hemos prescindido del scroll pues por ahora los componentes no estan disponibles para AS3. Pueden hacer scroll con la propiedad MouseWheel es decir con la ruedita del mouse.

Cargando Flash

Y como para no perder la constumbre les dejo los archivo fuente de este ejemplo, espero les sirva y desde ahora estaremos encaminados a aprender AS3.

Comentarios Total 9 comentarios


Tadder
Publicado: 25/07/2007 1:45 am

Hola amigo oye yo logre ponerle el Scroll y funciona bien, solo debes poner scroller.scrollTarget = news_contenido; despues de igualar el contenido de la caja con el de la variable

Dario Gutierrez
Publicado: 15/04/2008 11:39 am

Ya tome nota del post y tu comentario Tadder, estoy por ponerlo en mi site. Saludos desde Cancun Mexico

VIDEOAPRENDE » CREAR LECTOR RSS EN AS3
Publicado: 07/07/2008 2:43 pm

[…] Descargar VideoTutorial Descargar Archivos Ver Tutorial Mencionado en el VideoTutorial […]

Diego
Publicado: 03/10/2008 9:53 am

Hola! Quería consultar si es posible que al hacer click sobre los titulos, estos se abran en una nueva ventana (Algo así como target=_blank). Si fuese posible por favor les pido me den un ejemplo de donde iría en el código.
Desde ya muchas gracias!

Raul
Publicado: 08/12/2008 2:53 pm

Tengo un pequeño problema, al abrir directamente (doble click) el html, php, etc. donde se carga el archivo flash este se muestra sin problemas y carga el contenido del feed, pero al abrirlo por url usando http://localhost/direccionweb.html (tengo instalado Appserv)me carga el flash pero no muestra el contenido del feed, se queda en “cargando”..a que se debe esto?? como se puede solucionar?

PD: tambien subi el archivo a un hosting gratuito http://pullmancuevas.webcindario.com/noticias.php para que vean el problema.

unijimpe
Publicado: 08/12/2008 3:07 pm

Lo que sucede es que Flash lee archivos que están en un mismo dominio, esto por temas de seguridad, entonces para que lea tienes varias posibilidades:

1. Subes tu flash al sitio donde esta el RSS, con eso estarían en el mismo dominio y si funcionarían.
2. Creas en el dominio donde esta el RSS un archivo crossdomain.xml donde habilitas los permisos para que flash pueda leer el RSS.
3. Creas un archivo que he haga el cambio de dominio, eso lo puedes hacer con un php sencillo. Para saber acerca de este cambio de dominio puedes leer: http://blog.unijimpe.net/proxy-en-php/

Raul
Publicado: 08/12/2008 3:40 pm

Muchas gracias por contestar tan rapido!…me sirvio el punto 3 el de crear un php…problema solucionado…muchas gracias de nuevo :)

pablo
Publicado: 04/03/2009 2:46 pm

no encuentro la forma de que los links abran un target=”_blank”.
he probado de insertarlo en todos los espacios del tag y nada. me podrias ayudar?

milton
Publicado: 18/05/2011 9:58 am

Hola quiero hacerte una consulta sobre como separar los datos que estan dentro de la etiqueta “description” porque cargue un xml de un rss y queria retocarlo un poco separando el texto y las imagenes por otro no se como extraer unicamente el dato que se encuentra en: <img src= y colocarlo en un clip de pelicula

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)