La verdad es que poca gente de la que conozco que se dedica a desarrollar en flash conoce la existencia o se ha interesado en indagar en las posibilidades de JSFL (JavaScript Flash) y la cantidad de tiempo que puede ahorrarnos.
En general es debido a que el JSFL es más útil para personas que utilizan más la interfaz gráfica del programa que no a los que se dedican a programar todo en Classes.
Os voy a mostrar 2 scripts que a mí me ayudan bastante, sobretodo cuando tengo que generar banners y cosas así, que requieren de la utilización de muchos objetos (assets) y tiene que ser una cosa rápida.
Por ejemplo: Imagínaos que tengo un montón de símbolos en la librería que he de mover al escenario, y controlarlos mediante actionscript. Habría que ir dando un nombre a cada instancia, y eso se hace pesado, sobretodo porque seguramente ese nombre sea casi igual al del símbolo.
La solución en este caso es crear un archivo .jsfl (con cualquier editor de texto) con este script:
for(i in fl.getDocumentDOM().selection){
var libname=fl.getDocumentDOM().selection[i].libraryItem.name
fl.getDocumentDOM().selection[i].name =libname.toLowerCase();
fl.getDocumentDOM().selection[i].name =
fl.getDocumentDOM().selection[i].name .replace(/\s/g,"") ;
fl.trace("Instancia de "+libname+" renombrada como :"+
fl.getDocumentDOM().selection[i].name); }
Y una vez ejecutadp automáticamente todos los movieclips anónimos tendrán un nombre de instancia
Quizás esto se quede corto y lo que necesitemos sea importar un montón de objetos al escenario y convertirlos todos en movieclips. Para ello he creado este otro script que va seleccionando cada objeto del escenario y pidiendo un nombre para convertirlo en MovieClip,guardarlo en librería y renombrar la instancia como en el ejemplo anterior. Bastante más cómodo que andar dándole al F8, añadir nombre, y cambiar el nombre de instancia a mano.
var elementos= fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements ;
for(i in elementos ){
fl.getDocumentDOM().selectNone();
elementos[i].selected = true;
if(typeof(fl.getDocumentDOM().selection[0].libraryItem)=="object"){
var simbolo = prompt("Escribe un nombre de símbolo para la selección");
if(simbolo==null){break;}
simbolo=simbolo.charAt(0).toUpperCase() + simbolo.slice(1);
var Movieclip = fl.getDocumentDOM().convertToSymbol("movie clip", simbolo, "top left");
fl.trace("Nuevo MovieClipcreado:" +simbolo);
fl.getDocumentDOM().selection[0].name =
fl.getDocumentDOM().selection[0].libraryItem.name.toLowerCase();
fl.getDocumentDOM().selection[0].name =
fl.getDocumentDOM().selection[0].name.replace(/\s/g,"_") ;
fl.trace("Instancia de "+ fl.getDocumentDOM().selection[0].libraryItem.name
+ " renombrada como :"+fl.getDocumentDOM().selection[0].name);
}
}
Una de los mayores problemas que encontramos es a la hora de guardar los archivos .jsfl de forma que aparezcan en el menú Comandos de la UI de Flash y no tener que llamar a mano al script mediante “ejecutar comando”. Lo “lógico” sería guardarlo en C:\Program Files\Adobe\Adobe Flash CS4\es\First Run\Classes (o algo parecido dependiendo del sistema operativo), pero no es así, en Vista/W7 la carpeta de comandos almacenados es C:\Users\usuario\AppData\Local\Adobe\Flash CS4\idioma\Configuration\Commands
Posted by Cesar - 28/01/11 - 1 comment







