Empecemos con un ejemplo personal mio de mi :P
En mi trabajo tengo la costumbre de editar fotografias e importarlas en grupo para luego empezar a animarlas. Lamentablemente no hay un modo de seleccionar todas las fotografías y convertir CADA UNA en un símbolo, si seleccionas varios objetos, y haces F8 pues te las convierte todos a un solo símbolo. En resumen, quita tiempo.
Aquí entra a tallar JSFL. Usaremos los siguientes objetos y propiedades:
fl: el objeto raiz de todos, el GRAN PAPÁ
getDOM():Método del objeto Flash (fl); recupera el DOM (objeto del documento) del documento actualmente activo (archivo FLA). Si unos o más documentos están abiertos pero un documento no se enfoca actualmente (por ejemplo, se enfoca un archivo de JSFL), recupera el DOM del documento activo más reciente. En pocas palabras, te permite un acceso a manejar el documento FLA donde ejecutas el JSFL.
Selection: Propiedad del objeto DOCUMENT (el archivo fla donde trabajamos actualmente) aloja una matriz de los objetos seleccionados en el documento. Si no se selecciona nada, devuelve una matriz de longitud cero. Si no hay documento abierto, devuelve NULL.
SelectNone: Método delobjeto DOCUMENT. Deselecciona cualquier objeto seleccionado.
elementType: El objeto ELEMENT es cualquier cosa que aparezca en el escenario, esto quiere decir que el objeto ELEMENT puede darnos información o manejo sobre el objeto que esté en el escenario. Una de las propiedades de este objeto es elementType una propiedad de solo lectura que nos da el tipo de elemento al que pertenece el objeto, puede devolverte los siguientes tipos: "shape", "text", "instance", or "shapeObj".
instanceType: Instancia es una subclase del objeto ELEMENT tiene 2 propiedades, una de ella de solo lectura es la de instanceType la cual nos devuelve el tipo de instancia a la cual pertenece el objeto, pudiendo devolver: "symbol", "bitmap", "embedded video", "linked video", y "compiled clip".
libraryItem.name: libraryItem es la segunda propiedad del objeto ELEMENT, originalmente instance.libraryItem es un elemento de la libreria usado para instanciarse (no pudiendo cambiar de tipo de instancia, como de grafico a bitmap por ejemplo) pero tambien maneja su propiedad NAME, la cual nos permite saber el nombre que lleva en la librería.
convertToSymbol: es un método del objeto DOCUMENT que nos permite convertir un objeto en un símbolo, toma 3 parámetros: el tipo de símbolo, el nombre y la posición del punto de registro.
Con esto explicado ya podemos explicar nuestro script:
//Lo primero que tenemos que hacer en nuestro archivo JSFL es sacar una instancia del objeto principal, el Flash, pero referidos al DOM, es decir a la película que estoy trabajando ahora, entonces hago una instacia de él:
var miDOM=fl.getDocumentDOM();
//ahora también instancio lo que he seleccionado (datos que JSFL lo guarda en una matriz), osea OBJ es una matriz:
obj=miDOM.selection;
//empiezo mi bucle, tomando el largo de la matriz de los objetos seleccionados
for (var i=0; i < obj.length; i++) {
//este es un pequeño workaround, para manejar sólo objetos seleccionados, el problema es que queremos convertir CADA UNO y sin este hack todos se convierten en un solo símbolo. El truco es deseleccionar todo, pero ojo que como ya hemos metido lo seleccionado a una matriz, Flash ya tiene una referencia de qué objetos convertir:
fl.getDocumentDOM().selectNone();
//ahora volvemos a seleccionar pero SOLO un elemento de la matriz (es decir el array de lo seleccionado uno por uno) usamos un array bidemensional.
fl.getDocumentDOM().selection=[obj[i]];
//acá hago un condicional: si es que el objeto seleccionado es del tipo INSTANCIA
if(obj[i].elementType == 'instance') {
//y si es una instancia y NO ES SIMBOLO (osea no esta definida como simbolo)
if(obj[i].instanceType != 'symbol') {
//voy a convertirla al símbolo que quiero, PERO para nombrarlo tomare su nombre original y le sumo "_mc" para identificarlo en la librería.
nombre=obj[i].libraryItem.name
//luego seteo las propìedades del símbolo que he convertido, va ser un movie clip con su punto de registro en el centro del objeto.
fl.getDocumentDOM().convertToSymbol('movie clip', nombre+'_mc', 'center')
}
}
}
Como ves, se sigue una lógica basada en el modelo del objeto del documento (DOM) del flash. Es cierto que si vienes de AS y no has visto nunca nada igual, puede marearte, pero sólo es cuestion de que te acostumbres y con la referencia de JSFL en una mano, empieces a practicar. El ejemplo que he puesto es muy simple pero ilustra lo que puedes hacer con JSFL y sobre todo CÓMO hacerlo.