Comunicación directa cliente-cliente desde Flash Player 10! Se acabaron mis vacaciones, empieza una nueva etapa
May 27

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:

  1. La primera y más simple es almacenar la librería de Flash en un archivo .SWC
  2. 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:

  1. Generamos el swf con la librería
  2. Desde nuestra aplicación principal cargamos la librería en tiempo de ejecución como hacemos normalmente con cualquier otro swf
  3. Accedemos (ya veremos cómo) a las clases del swf cargado (MovieClips, etc)

Continuará…

6 Responses to “Cómo usar la librería de Flash con Flex Builder”

  1. brunushky Says:

    Muy interesante….solo me gustaria saber cual es el beneficio de usar un SWF en lugar de un SWC….

    Gracias….

  2. xleon Says:

    Pues que un swf lo puedes cargar en tiempo de ejecución, evitando que tu swf principal pese menos

  3. brunushky Says:

    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…

  4. xleon Says:

    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

  5. xleon Says:

    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?

  6. brunushky Says:

    -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 !!!

Leave a Reply