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.
[as]
var rssURL:String = «http://blog.unijimpe.net/feed/»;
var rssXML:URLRequest = new URLRequest(rssURL);
var myLoader:URLLoader = new URLLoader(rssXML);
myLoader.addEventListener(«complete», xmlLoaded);
[/as]
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.
[as]
function xmlLoaded(evtObj:Event) {
var rss:XML = new XML(myLoader.data);
var vtit:String = rss.child(0).title;
var vurl:String = rss.child(0).link;
var vdes:String = rss.child(0).description;
var vcon:String = «»;
for each (var nodo:XML in rss..item) {
vcon += ««+nodo.title;
vcon += «
«+nodo.description+»
«;
}
txttitle.htmlText = ««+vtit+»«;
txtdescription.text = vdes;
txtcontent.htmlText = vcon;
}
[/as]
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.
[as]
var rssURL:String = «http://blog.unijimpe.net/feed/»;
var rssXML:URLRequest = new URLRequest(rssURL);
var myLoader:URLLoader = new URLLoader(rssXML);
myLoader.addEventListener(«complete», xmlLoaded);
function xmlLoaded(evtObj:Event) {
var rss:XML = new XML(myLoader.data);
var vtit:String = rss.child(0).title;
var vurl:String = rss.child(0).link;
var vdes:String = rss.child(0).description;
var vcon:String = «»;
for each (var nodo:XML in rss..item) {
vcon += ««+nodo.title;
vcon += «
«+nodo.description+»
«;
}
txttitle.htmlText = ««+vtit+»«;
txtdescription.text = vdes;
txtcontent.htmlText = vcon;
}
[/as]
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.
[swf]/wp-content/uploads/2006/12/rss-as3.swf, 450, 400[/swf]
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
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
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
Publicado: 07/07/2008 2:43 pm
[…] Descargar VideoTutorial Descargar Archivos Ver Tutorial Mencionado en el VideoTutorial […]
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!
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.
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/
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 :)
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?
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