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.

Que fácil es tener una tienda online

Lo dificil es que se venda

Camiseta YO

Dominar CSS te ayudará a encontrar empleo

Estamos asistiendo sin darnos cuenta a una gran renovación del parque móvil de los diseñadores web.

Y es que en las actuales ofertas de empleo en donde se solicita un diseñador ya empiezan a aparecer las palabras CSS, posicionamiento sin tablas, accesibilidad. etc.

Muchos dinosaurios del desarrollo web tendrán que actualizarse o se acabarán extinguiendo.

Es un filtro invisible, lento, pero inexorable.

Diseñar webs ya no será tan fácil como utilizar un editor WYSIWYG y ponerte la medalla.

Yo fui de esos hasta que descubrí los blogs técnicos en donde recomendaban reiteradamente dar el salto al XHTML y CSS.

Es un camino sin retorno, duro pero lleno de ventajas.

Aceptar el estándar o perecer.

Asignar un valor a una variable construida con eval().

En Actionscript v.1 a veces nos gustaría asignar un valor a una variable de la siguiente manera:

eval(”_root.mivar”+(i-1)) = 100; // da error

Pero esto no funciona, salvo que lo hagamos de otra manera. A saber:

set(”_root.mivar”+(i-1), 100); // ok

o también,

_root["mivar"+(i-1)] = 100; // ok

Para casos del tipo:

eval(”_root.movie”+(i-1)+”._alpha”) = 100; // da error

que tampoco funciona, si se puede utilizar eval() con una pequeña variante:

eval(”_root.movie”+(i-1))._alpha = 100; // ok

Desordenar un array en ActionScript

Esta función cambiará el orden de los elementos de un array de forma aleatoria.

Consiste en un bucle FOR que escoge un elemento al azar del array y lo coloca en primera posición, luego selecciona otro, pero desde la segunda posición y lo sitúa a continuación del primero, y así sucesivamente hasta que se acaba la longitud del array.

[ftf]desordenarray = function (array) {
var array_array = array;
for (i=0; i< (array_array.length); i++) {
var posic = (Math.round(Math.random()*((array_array.length-1)-i)))+i;
array_array.splice(i, 0, array_array[posic]);
array_array.splice(posic+1, 1);
}
};
lista_array = new Array(”1″, “2″, “3″, “4″, “5″, “6″);
desordenarray(lista_array);
trace(lista_array); [/ftf]

Problemas al exportar como imagen

Cuando exportas un trazado a imagen, por ejemplo, al formato eps, Flash establece los límites de la imagen donde haya puntos de trazado.
Si estos definen una curva que se extiende más allá de dichos puntos, Flash recortará la imagen exportada ocultando esas curvas.
La solución pasa por crear un marco exterior que rodee por completo el trazado a exportar.

No a los derechos de autor

Voy a ir un poco más lejos que los que atacan a la SGAE u otras sociedades de gestión de derechos de autor.

Un artista no debería tener más derechos sobre su obra que los que tiene un agricultor sobre sus tomates o un albañil sobre su muro de ladrillos. Y más cuando en realidad no es él quien se lleva la mayor parte del beneficio que genera esos derechos.

Centrándome en la música, un artista bebe de todos los temas que ha escuchado o le han enseñado, y entonces da un paso más allá y compone algo nuevo.

Cuanto mas acceso a la cultura se tiene mas variado y rico es el resultado.

Las sociedades de gestión hacen su trabajo en base a la ley vigente, con mayor y menor fortuna, creándose amigos y enemigos, igual que las discográficas, que se aferran a un modelo de negocio que está cambiando a toda velocidad.

El problema es más de base que de situación. Me explico. El problema son los derechos de autor.

Hace ya algunos años hice mis pinitos con la música, formé parte de varios grupos musicales de ámbito local.

Por alguna razón, pensaba que para evitar que alguien me pisara la canción que tanto esfuerzo me costó componer debía protegerla por todos los medios.

Entre otras cosas me asocié a la SGAE. Mas tarde, y por razones diferentes, fui comercial para Sony Music, lo cual me sirvió para clarificar las directrices que mueven la industria discográfica.

Y al mismo tiempo, siempre he sido informático aficionado e internauta entusiasta. Me he bajado miles de canciones que todavía no he escuchado y he sido sensible a todos los movimientos pro artistas, pro derechos, y pro industria que me han llegado, por que sigo teniendo amigos músicos e inquietudes artísticas.

Pero lo que percibo es lo siguiente:

* Si proteges una obra en exceso, esta se estanca y nadie la puede utilizar para aportar algo nuevo.
* El 1% de los artistas consiguen la fama efímera durante un breve periodo de tiempo, entre uno y cinco años, y luego ya nadie se acuerda de ellos y tampoco se puede utilizar su obra por que está protegida. Absurdo.
* Los derechos de Autor no ayudan a difundir las obras por que las encierran en el ámbito donde las discográficas las pueden explotar para su beneficio.
* Las discográficas importantes solo promocionan dos tipos de artistas, los comerciales, y los de calidad que también son comerciales.

Si eres compositor, músico, cantante, etc, y quieres vivir de la música, la Propiedad Intelectual, sin mover un dedo, te dará la autoría de tu obra de forma instantánea, pero no dejes de componer, tocar o cantar. Búscate un buen manager que te consiga conciertos y mueve el trasero de la silla que tienes delante del buzón de correos todos los fines de mes esperando la carta con los royalties de la canción del verano que pegó hace cuatro años y de la cual eres coautor.
Libera tu obra para que otros puedan disfrutarla y enriquecerse (intelectualmente hablando), igual que tú disfrutas de las tartas de la pastelería de tu barrio.

No bases tu sueño en la suerte y el trabajo de unos pocos que se han consagrado como clásicos del pop y el rock, y hace años que no aportan absolutamente nada salvo iniciativas del tipo: “aumentemos los años de protección de nuestras obras para que nuestros hijos, que no han dado nunca un palo al agua, puedan seguir beneficiándose de lo buenos que eramos hace cinco décadas”, que es poco mas o menos lo que ha pasado con el logo de Google, estilo Miró, que este retiró porque los beneficiarios de los derechos de explotación de la figura y obra del fallecido artista se creyeron perjudicados. No me extraña. Millones y millones de impresiones en pantalla de gente que utiliza el buscador Google en todo el mundo recordando a Miró es una mala promoción y no puede traer nada bueno.

JA.

No a los derechos de autor. Por el bien de la música.

Redescubriendo un atajo de teclado

En una entrada anterior hablé de un atajo de teclado que consistía en que situando el cursor dentro de la vista de código del IDE de Flash y pulsando la combinación de teclas ‘Control’ + ‘acento’ (´), si estabas dentro de un bloque de paréntesis, corchetes, o llaves, se seleccionaba todo el contenido dentro de ese bloque.

Pues bien, si sigues dándole al atajo de teclado, se va ampliando la selección hacia los bloques ‘padre’ si es que estos existen.

A veces para testear sintaxis de código con scripts anidados o fórmulas complejas viene de perlas.

Stanislaw Lem

… ha entrado en su ‘Vacio perfecto’.

Y sin embargo el mio es más sólido.

Offtopic: Un recuerdo a los guionistas

Como usuario habitual de blogs y no tanto de foros, me encuentro a menudo con citas curiosas o inteligentes de personajes conocidos por sus méritos o famoseo vario.

Un caso cada vez más frecuente son las frases de personajes de series de televisión o películas, en las que se le asigna la frase al actor ‘X’ que hace el papel del personaje ‘Y’ en el film ‘Z’.

Pero el mérito es del guionista. ¿Quíen era? ¿Cómo se llamaba? ¿En qué otros proyectos trabajó? ¿Si ha soltado una perla donde está el cultivo de ostras?

Pues eso, un recuerdo a esas líneas en los títulos de crédito que empiezan por ‘guión…’.