Mis primeros scripts jsfl
Cuando hago animaciones en flash, a menudo repito la mismas interpolaciones de movimiento o forma, pero con diferentes elementos.
Por ejemplo, distintas imágenes que se escalan del 50% al 100% desde una posición determinada, o las letras de una palabra que parten de unas coordenadas y a un tamaño inicial y acaban en otro lado y con dimensiones diferentes.
Lo normal era seleccionar el elemento anterior con la posición y tamaño inicial, tomar nota del width, el height, y las coordenadas x e y, y volver al elemento que repetiría la interpolación para cambiar su tamaño y posición a los valores que había previamente apuntado. Y hacer lo propio con los siguientes elementos que iban a hacer lo mismo.
Aprovechando que mi jornada intensiva en el trabajo me deja las tardes libres, decidí buscar una solución y la encontré en JSFL.
Conseguí programar dos scripts. Los convertí en archivos con la extensión ‘jsfl’ y los guardé en la carpeta donde está el resto de comandos, en la dirección del pc del tipo C:\Documents and Settings\NOMBRE_USUARIO\Datos de programa\Macromedia\Flash 8\es\Configuration\Commands\, (donde hay que cambiar NOMBRE_USUARIO por lo que corresponda). Así accedería a ellos diréctamente desde el menú Comandos del IDE de Flash.
Los llamé PlaceAndSize_get.jsfl y PlaceAndSize_set.jsfl, y funcionan de la siguiente manera:
Selecciono un elemento del escenario y ejecuto PlaceAndSize_get desde el menú Comandos.
Esto es lo que ocurre:
var obj2selecprops=fl.getDocumentDOM().selection;
var copiarw = obj2selecprops[0].width;
var copiarh = obj2selecprops[0].height;
var copiarx = obj2selecprops[0].left;
var copiary = obj2selecprops[0].top;
Este código copia en memoria las dimensiones y posición del elemento seleccionado.
Luego me voy al frame donde está el elemento que quiero que tenga los mismos atributos y lo señalo también. (El anterior deja de estar seleccionado obviamente).
Ejecuto esta vez el comando PlaceAndSize_set y diréctamente establezco el tamaño y posición del primer objeto seleccionado al segundo.
var obj2pasteprops=fl.getDocumentDOM().selection;
obj2pasteprops[0].width = copiarw;
obj2pasteprops[0].height = copiarh;
var copiarxb = obj2pasteprops[0].left;
var copiaryb = obj2pasteprops[0].top;
fl.getDocumentDOM().moveSelectionBy({x:copiarx-copiarxb, y:copiary-copiaryb});
Y como los valores de las variables permanecen en memoria puedo volver a ejecutar el segundo comando tantas veces como lo necesite.
Solo me falta ver que atajo de teclado le casco para no tener ni que desplegar el menú Comandos.
Aquí están los jsfl.
Lo único que he detectado que no funciona correctamente es cuando el elemento inicial o final tiene algún trazado periférico.
Me explico. Un cuadrado de 100px de lado con un trazado de 1px en el borde, el IDE de Flash te dice que es una forma con 100px de lado pero el script jsfl que tiene 101px, por que a los 100 le suma 0.5 dos veces, que es lo que sobresale el trazo de 1px por cada lado.
Que lo sepas.
