Comunidad de diseño web y desarrollo en internet

Lector de RSS de escritorio con Flash y MDM Zinc

En este tip vamos a modificar un lector de RSS para convertirlo en una aplicación de escritorio mediante Flash y MDM Zinc.

Nos hemos basado en un lector RSS en Flash ya creado. Concretamente en este:


Cómo en su web viene muy bien explicado aquí solamente haremos referencia a los retoques o fragmento de código añadidos.

Para empezar creamos una nueva capa donde añadimos un ComboBox de nombre "combositios", un botón para minimizar la aplicación de nombre "bot_min", otro botón para cerrar la aplicación de nombre "bot_cerrar" y un último botón, solamente con zona activa, para poder arrastrar la aplicación por el escritorio.



A continuación creamos un archivo xml de nombre "sitios.xml" con los feeds de nuestros sitios preferidos, la estructura ha de ser así:

Código :

<sitios>
   <sitio url="http://www.cristalab.com/rss.php">Cristalab</sitio>
   <sitio url="http://www.joangarnet.com/blog/?feed=rss2">Joan Garnet</sitio>
   <sitio url="http://www.theninjabunny.com/feed/">The Ninja-Bunny</sitio>
   <sitio url="http://feeds.feedburner.com/unijimpe">Unijimpe</sitio>
</sitios>


Pasemos al actionscript:

Código :

Stage.scaleMode = "noScale";
var rssxml:XML = new XML();
rssxml.ignoreWhite = true;
rssxml.onLoad = function()
{
   var nodo:XMLNode = rssxml.firstChild.firstChild;
   var vtit:String = "";
   var vurl:String = "";
   var vdes:String = "";
   var vcon:String = "";
   for (i = 0; i < nodo.childNodes.length; i++) {
      var snodo:XMLNode = nodo.childNodes[i];
      switch (snodo.nodeName) {
      case "title" :
         vtit = snodo.firstChild.nodeValue;
         break;
      case "link" :
         vurl = snodo.firstChild.nodeValue;
         break;
      case "description" :
         vdes = snodo.firstChild.nodeValue;
         break;
      case "item" :
         vcon = vcon + getContent(snodo);
         break;
      }
   }
   txttitle.htmlText = "<a href=\"" + vurl + "\">" + vtit + "</a>";
   txtdescription.text = vdes;
   txtcontent.htmlText = vcon;
};
function getContent(vxml)
{
   var stit:String = "";
   var surl:String = "";
   var sdes:String = "";
   for (j = 0; j < vxml.childNodes.length; j++) {
      var sxml:XMLNode = vxml.childNodes[j];
      switch (sxml.nodeName) {
      case "title" :
         vtit = sxml.firstChild.nodeValue;
         break;
      case "link" :
         vurl = sxml.firstChild.nodeValue;
         break;
      case "description" :
         vdes = sxml.firstChild.nodeValue;
         break;
      }
   }
   return "<a href=\"" + vurl + "\"><b><font color=\"#990000\">" + vtit + "</font></b></a><br>" + vdes + "<br><br>";
}
var sitiosxml:XML = new XML();
sitiosxml.ignoreWhite = true;
sitiosxml.onLoad = function()
{
   lo = new Object();
   comboDatos = new Array();
   combositios.dataProvider = comboDatos;
   for (i = 0; i < sitiosxml.firstChild.childNodes.length; i++) {
      comboDatos.addItem({label:sitiosxml.firstChild.childNodes[i].firstChild.nodeValue, data:sitiosxml.firstChild.childNodes[i].attributes.url});
   }
   rssxml.load(sitiosxml.firstChild.childNodes[0].attributes.url);
   lo.change = function(evt)
   {
      rssxml.load(combositios.value);
   };
   combositios.addEventListener('change', lo);
};
sitiosxml.load("sitios.xml");
bot_mover.onPress = function()
{
   startDrag(_root);
};
bot_mover.onRelease = function()
{
   stopDrag();
};
bot_min.onRelease = function()
{
   mdm.Application.minimizeToTray(true);
   mdm.Application.minimize();
};
bot_cerrar.onRelease = function()
{
   mdm.Application.exit("ask", "¿Seguro que quieres cerrar?");
};


Como hemos dicho antes, solamente comentaremos los retoques o fragmentos añadidos porque en la web del autor está muy bien explicado.

Al inicio hemos añadido un:

Código :

Stage.scaleMode = "noScale";


Para que luego, al compilarlo con Zinc no nos lo agrande al ponerle ancho y alto 100%.

Al final del lector hemos añadido este otro trozo:

Código :

var sitiosxml:XML = new XML();
sitiosxml.ignoreWhite = true;
sitiosxml.onLoad = function()
{
   lo = new Object();
   comboDatos = new Array();
   combositios.dataProvider = comboDatos;
   for (i = 0; i < sitiosxml.firstChild.childNodes.length; i++) {
      comboDatos.addItem({label:sitiosxml.firstChild.childNodes[i].firstChild.nodeValue, data:sitiosxml.firstChild.childNodes[i].attributes.url});
   }
   rssxml.load(sitiosxml.firstChild.childNodes[0].attributes.url);
   lo.change = function(evt)
   {
      rssxml.load(combositios.value);
   };
   combositios.addEventListener('change', lo);
};
sitiosxml.load("sitios.xml");


Primero creamos un objeto XML que es donde vamos a cargar nuestro archivo "sitios.xml". Los datos los metemos en el ComboBox y le decimos que nada más cargarse los datos, cargue el primer feed de la lista. También le creamos un listener al ComboBox para que cuando seleccionemos otro Feed nos cargue su contenido.

A continuación ponemos el siguiente trozo de código:

Código :

bot_mover.onPress = function()
{
   startDrag(_root);
};
bot_mover.onRelease = function()
{
   stopDrag();
};
bot_min.onRelease = function()
{
   mdm.Application.minimizeToTray(true);
   mdm.Application.minimize();
};
bot_cerrar.onRelease = function()
{
   mdm.Application.exit("ask", "¿Seguro que quieres cerrar?");
};


Al botón mover le asignamos un startDrag y stopDrag en los estados Press y Release respectivamente, con esto podremos mover nuestra aplicación por el escritorio.

Luego en el botón "bot_minimizar" le asignamos las funciones de Zinc de minimizar a la barra de tareas y en el botón "bot_cerrar" la función de salir preguntandonos antes si realmente queremos salir.

Bueno, ya tenemos nuestro lector RSS en Flash, y veremos que compilándolo funciona perfectamente. Ahora lo que queremos es compilarlo con Zinc para poder tenerlo en el escritorio como un ejecutable.



Abrimos Zinc y en la pestaña "Input File" le indicamos donde está nuestro archivo .swf en la sección "Input Source", por defecto Zinc no generará el archivo ejecutable con el mismo nombre en la misma ruta.



Luego en la pestaña "Style" en la sección "Window Style" marcamos la opción "Transparent", así solamente se verá lo que hemos diseñado y no tendrá fondo.



En la siguiente pestaña "Size/Position" marcamos la opción "Screen Percentage" y ajustamos los margenes, anchura y altura de nuestra aplicación. Esas serán las zonas donde veremos nuestro programa.



Finalmente llegamos a la pestaña "PC Executable Settings", aquí indicaremos la ruta de nuestro archivo .ico que queremos que tenga nuestro ejecutable, así como la apariencia en la barra de tareas. Nosotros hemos usado este archivo
. También deberemos marcar la opción "Show in Tray" que es la que indica si se muestra el programa en la barra de tareas o no.



Ya sólamente nos queda compilarlo, dándole al botón "Build" que está en la esquina inferior derecha de Zinc. Y listo, nuestro propio lector de RSS en el escritorio y simplemente para añadir feeds tocaremos el xml.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate