Este es el primero de una serie de tres tutoriales que pienso escribir sobre JSFL, donde mi intención es mostrar de la manera más sencilla posible el uso de esta herramienta en sus distintas aplicaciones.

Para este primer tutorial haremos un comando muy sencillo que únicamente utilizará un fichero de tipo JSFL, su tarea es muy sencilla, renombrará items de la biblioteca. Pero antes quizá deberiamos saber que son y donde se almacenan estos ficheros JSFL.

Pues bien, los ficheros JSFL son ficheros de texto plano con la extensión jsfl que contienen código JSFL y que podemos editar con el block de notas o nuestro editor de código preferido, en mi caso utilizo Flash Develop.

Los ficheros JSFL se almacenan principalmente en la ruta de instalación de Flash y también en nuestro perfil, en mi caso estoy trabajando bajo un Windows XP y la ruta donde tengo mis comandos es la siguiente:

C:\Documents and Settings\Usuario\Configuración local\Datos de programa\Adobe\Flash CS3\es\Configuration\Commands

Bueno, ahora si nos podemos poner a escribir nuestras primeras líneas de código JSFL.

//Declaración de variables
var oDoc;
var oLib;

Hasta ahora todo es muy fácil, ¿no? ni si quiera perece que estemos programando en JSFL, jejeje, pues de eso se trata, vamos con la siguiente parte, la configuración y comprobación principal del documento.

//Obtenemos las referencias al documento y a la biblioteca
this.oDoc = fl.getDocumentDOM();
if(this.oDoc)
{
    this.oLib = this.oDoc.library;
}
else
{
    alert("Debes tener un documento abierto.");
}

Aquí empezamos a ver cosas nuevas, por ejemplo fl.getDocumentDOM(), esta expresión nos permite obtener una referencia al documento actual en Flash, en el caso que no se tenga abierto ningún documento no devolvería nada y en la comprobación que hacemos llegariamos a un amigo más conocido, el alert que nos indica que debemos tener un documento abierto. Continuemos, en el caso que si exista el documento obtendriamos la referencia a la biblioteca a través de la propiedad library del documento.

Veamos la siguiente parte:

//Obtenemos los elementos seleccionados y el total
var aItems = this.oLib.getSelectedItems();
var nTotalItems = aItems.length;
if(nTotalItems > 0)
{
    //...
}
else
{
    alert("Debes seleccionar algún item de la biblioteca.");
}

Aquí volvemos a ver algo nuevo, la expresión this.oLib.getSelectedItems() es una llamada a un método del objeto library que nos devuelve un array con los items seleccionados en la biblioteca y aquí también hacemos una comprobación para continuar con la correcta ejecución del comando o mostrando una ventana de alerta informando al usuario que debe seleccionar algún item en la biblioteca.

En este momento ya nos encontramos en condiciones de preguntarle al usuario cual será el nuevo nombre que desea dar a los items, para esto no necesitamos realmente JSFL pues lo hacemos con JavaScript:

//Obtenemos el nuevo nombre
var sNuevoNombre = prompt("Nuevo nombre");

Y ahora si, ya con todo listo podemos proceder a la parte importante del comando, renombrar los items seleccionados:

var oItem;
for(var i = 0; i < nTotalItems; i++)
{
    oItem = aItems[i];
    this.oLib.selectItem(oItem.name);
    this.oLib.renameItem(sNuevoNombre + "_" + (i + 1));
}

Lo que hacemos es crear una varible para almacenar la referencia al item actual, luego creamos un bucle para recorrer los elementos seleccionados, obtenemos la referencia al item actual, utilizamos el método selectItem del objeto library para seleccionar un nuevo item, esto es porque para que funcione el método renameItem del objeto library es necesario haber seleccionado antes el item que se dese renombrar.

Y listo, con esto tenemos nuestro primer comando funcionando y todo desde un fichero JSFL. Podéis descargar el fichero de ejemplo de aquí.

Para cualquier duda, sugerencia o comentario estaré encantado en recibirlas y responderlas.

Más información:

Mi presentación para los talleres Subflash 2008.

Lista de recursos sobre JSFL.

Comparte:
  • Digg
  • Reddit
  • StumbleUpon
  • del.icio.us
  • BlinkList
  • NewsVine
  • Technorati
  • Google Bookmarks
  • MySpace
  • Facebook
  • Twitter
  • Meneame