Cuando se está haciendo desarrollo de juegos con Adobe AIR para Android o la tableta de BlackBerry, se pueden cargar archivos SWF al vuelo en tiempo de ejecución; con AIR para iOS, no hay tal opción. En Android o la tableta de BlackBerry el código es interpretado desde el bytecode de ActionScript, mientras que en iOS todo el código debe ser compilado desde el bytecode de ActionScript a bytecode nativo como un solo archivo IPA, el cual solo se puede crear desde un solo SWF.

SWF y SWC

Si el juego tiene docenas de niveles y cada nivel es un SWF, compilar para iOS puede ser un reto. Cuando se está en la programación de juegos y la fase de pruebas de desarrollo, se puede usar ipa-test-interpreter para cambiar la configuración del compilador, y tu juego se ejecutara como si lo hiciera en Android o en la tableta de BlackBerry. Sin embargo, Apple no aceptara juegos construidos utilizando este enfoque, así que se necesitara otro enfoque para la versión final.

Una solución es compilar cada nivel como una librería SWC, y entonces enlazar todos los SWC dentro de un solo archivo SWF.

Crear un solo archivo SWF de SWCs

Si estas usando Flash Builder, necesitaras usar un Flex Library Project, el cual generara un archivo SWC, en vez de un proyecto de ActionScript, cuyo archivo generado es un SWF.

Flash Builder

En Flash Professional CS5.5, puedes usar una opción en la caja de dialogo de la Configuración de Publicación, para generar un SWC en lugar de un SWF.

Flash Professional

A donde ir desde aquí

Cuando se usa la técnica descrita en este artículo para el desarrollo de un juego para iOS, se necesitara instanciar los nuevos niveles en tiempo de ejecución en lugar de cargarlos dinámicamente. Recuerda, es posible cargar archivos SWF en iOS, pero el código dentro de estos no será interpretado. Cargar un SWF de esta forma es útil para los recursos gráficos como animaciones o gráficos vectoriales. Puedes crear una librería completa de símbolos y simplemente seleccionar el símbolo que quieras utilizar.

Por último, nota que esta técnica funciona para ActionScript 3.0, pero no para ActionScript 2.0.

Para información acerca de combinar muchos SWFs dentro de un solo SWF, lee mi artículo Uniendo múltiples archivos SWF dentro de un SWF para su implementación en iOS.

La versión original de este artículo está publicada en Adobe Devnet bajo licencia Creative Commons, fue traducido y adaptado en nuestro blog por Jesús Macedo.