Cómo usar la librerÃa de Flash con Flex Builder
Doy por hecho que el lector de este artÃculo quiere deshacerse de Flash para compilar un swf. La herrramienta a utilizar es FlexBuilder. ¿Por qué FlexBuilder si solo vamos a usar ActionScript? (si, este post va sobre un proyecto ActionScript, nada que ver con el framework de Flex). Bueno, es simple, FlexBuilder no es ni de lejos, mejor que Flash Develop o FDT para escribir código, pero tiene debugger, y lo uso como herramienta estándar para proyectos ActionScript y proyectos Flex. Asà me centro en una sola en lugar de aprendérmelas todas.
Por otro lado lo que me gusta es que al compilar genera un html y swf con su “Express Install” (por si alguien no tiene la versión de Flash instalada). Bueno, vamos al lÃo…
Lo cómodo de trabajar con Flash es que creamos un MovieClip en la librerÃa, lo vinculamos con un nombre de clase, y automáticamente lo podemos instanciar mediante código con el mismo nombre que habÃamos vinculado.
Y entonces para instanciar la clase “Cuadrado”, que en realidad es un MovieClip, hacemos lo siguiente:
1 | var loquesea:Cuadrado = new Cuadrado() |
¿Cómo hacemos esto en Flex Builder?
Pues asÃ, a secas, no se puede =), Flex no tiene ningún contenedor de assets donde podamos tenerlos almacenados. Pero podemos solucionarlo de dos maneras:
- La primera y más simple es almacenar la librerÃa de Flash en un archivo .SWC
- La segunda, un pelÃn mas compleja, pero más útil, es almacenar lo mismo en un .SWF
El swc se genera igual que un swf, compilando la pelÃcula de Flash, pero marcando la opción “Exportar swc” en opciones de publicación
Al publicar se obtendrá un archivo SWC en el mismo directorio de publicación que el swf.
Ahora desde nuestro proyecto Flex, linkamos dicho archivo para poder usar los MovieClips vinculados
Nota: si no sabes cómo crear un proyecto “ActionScript” en Flex, se explica en este post
Clicamos con el botón derecho sobre la carpeta de proyecto (dentro de FlexBuilder), clicamos en “Properties” y luego en “ActionScript build path”. Ahora pinchamos la pestaña “Library Path” y le damos al botón “Add swc”. Buscamos nuestro swc y le damos a ok
Ahora desde nuestro código ya podemos instanciar todos nuestros MovieClips. Además, la ayuda de código de Flex Builder reconocerá las clases vinculadas
Y listo ! Podéis compilar y veréis vuestro Cuadradito funcionand
Esto es muy útil pero tiene un inconveniente simple: el peso de nuestra pelÃcula principal aumentará tanto como pese el swc, porque Flex embeberá (incorporará) en el swf generado, los sÃmbolos o imágenes que instanciemos en nuestro código (los que no instanciemos no se incluirán).
Entonces es cuando pensamos en poner en práctica la segunda forma, se basa en lo siguiente:
- Generamos el swf con la librerÃa
- Desde nuestra aplicación principal cargamos la librerÃa en tiempo de ejecución como hacemos normalmente con cualquier otro swf
- Accedemos (ya veremos cómo) a las clases del swf cargado (MovieClips, etc)
Continuará…




July 10th, 2008 at 11:10 pm
Muy interesante….solo me gustaria saber cual es el beneficio de usar un SWF en lugar de un SWC….
Gracias….
July 10th, 2008 at 11:13 pm
Pues que un swf lo puedes cargar en tiempo de ejecución, evitando que tu swf principal pese menos
July 10th, 2008 at 11:27 pm
xleon: ese es un buen punto :) …
osea que basicamente la diferencia es un tema de “ahorro” en el tamaño del swf final…
ahora pero si todos los elementos de la libreria se van a usar mas tarde o mas temprano…el total de carga de datos va a ser la misma….aun que para proyectos grandes obviamente es mejor cargar los elementos segun la demanda… :)
Gracias…
July 11th, 2008 at 12:37 am
Bueno, básicamente sÃ, aunque el swc tiene otras caracterÃsticas añadidas. Por ejemplo se usan mucho para “embeber” librerÃas de código o API´S de programación, sin que el código sea modificable. Imagina que desarrollas un framework y quieres distribuirlo sin que llegue a ser open source, pero quieres que todos los métodos (públicos) de tus clases sean accesibles. Pues es la manera de hacerlo. Viene muy bien explicado en el libro de AS3 de Collin Mook.
Sobre lo que comentas de las cargas y pesos, es cierto, pero válido para aplicaciones Flash. En Flex la cosa cambia puesto que, aunque embebas los swc al compilar, y ésta pese más, la pelÃcula principal se precargará correctamente, evitando el tÃpico y eterno problema de Flash en el que la precarga no aparece hasta que se ha cargado parte de tu swf que alberga dicha precarga. ¿Me explico?
Yo en mis aplicaciones Flash solo tengo código y algún que otro asset embebido y de poco peso que uso para el cargador, y todo lo demás, lo cargo dinámicamente.
Un saludo
July 11th, 2008 at 12:38 am
Y por otra parte, todos los assets o elementos a cargar no tiene por qué usarse por completo, sino bajo demanda del usuario. Si existe la posibilidad de que un usuario no entre en x sección, ¿por qué añadirlo a la carga principal?
July 11th, 2008 at 3:20 am
-xleon: Comprendo lo que dices….y tienes razon :)
“Viene muy bien explicado en el libro de AS3 de Collin Mook.” …jeje lo tengo aca frente a mi, pero se ve que aun no llegue a ese capitulo :P
(Muy buen libro, lo recomiendo!!!)
Muchas gracias por la explicacion !!!