En este videotutorial vamos a ver algunas consideraciones importantes en la creación de juegos para iPhone utilizando Flash.
Rendimiento
Para comenzar, nunca va a ser lo mismo crear una aplicación en flash que en xCode. Ya que xCode es el IDE nativo de iOS, y siempre va a estar un paso adelante en rendimiento o customización.La versión actual de AIR es la 3.2, que viene en Flash CS6. A diferencia de la versión 2.6 de hace unos cuantos meses. En ésta, el procesamiento es el doble de rápido. Sin embargo, el rendimiento de un juego es aproximadamente 30 veces menor que el de uno hecho con xCode. Esto lo pude comprobar armando una aplicación con Box2d en ambos lenguajes.
El touch de una aplicación creada con flash, tiene mucho más delay que una en xCode.
Pero lo bueno de flash es su simpleza y flexibilidad para trabajar. En cambio el lenguaje de xCode (objective-c) es mucho más robusto que AS3.
MovieClips
Si tu proyecto está programado en la Línea de Tiempo a base de MovieClips es posible que tengas problemas con la reproducción del mismo.Por ejemplo, si se está reproduciendo una animación, en el momento en que aparezca otro movieclip en escena puede que tarde en mostrarse ya que la carga del mismo es asincrónica.
En lo posible, siempre hay que evitar utilizar MovieClips.
Preloads
En caso de que quieras tener una PreCarga animada, solamente funciona con archivos externos como imágenes o xml. No se pueden importar archivos swf externos ni hacer una precarga de los elementos utilizados en biblioteca. A veces la mejor solución es usar un splash como precarga. La imagen Default.jpg que muestra por defecto mientras se carga la aplicación.Fuentes
Por alguna razón la incorporación de fuentes externas no funciona como debería. La única forma que encontré de usar un texto con una fuente externa, es creando un movieclip con un textfield que tenga embebido los caracteres de esa fuente.Filtros
Los filtros siempre empeoran el rendimiento. Pero en este caso, empeoran muchísimo el rendimiento.Es más, si compilas con el modo de procesamiento GPU, para mejorar el rendimiento gráfico, elimina todos los filtros y aumenta el rendimiento de los movieclips.
Control de Memoria
Es muy importante controlar que todos los objetos en memoria sean borrados adecuadamente. Como puede ser en caso de reiniciar el juego o cambiar de nivel.Ya que si la app supera aproximadamente los 100mb en RAM o hace un procesamiento muy complejo puede crashear.
Si quieres saber cuál es la mejor forma para controlar los objetos en memoria te recomiendo que veas mi videotutorial anterior.
Matemáticas
La matemática puede funcionar diferente en el iPhone.Código :
uint( ((0 - 0.5) / 3) + 1 ); Math.floor( ((0 - 0.5) / 3) + 1 );
En este ejemplo, el resultado de la primer línea es 0. Si lo pruebas desde flash funciona bien. Pero si lo pruebas desde un iPhone el resultado es 1. Por esta razón siempre conviene utilizar la clase Math, como en la segunda línea.
Plugins
Por último, si quieres utilizar gamecenter, facebook, u otras cosas externas al proyecto., tienes que agregar plugins en la compilación.Para eso, es conveniente crear un proyecto "AIR Mobile AS3 App" en FlashDevelop.
El cual nos agrega diferentes ejecutables para gestionar nuestra compilación.
Si quieres saber cómo utilizarlo, tienes que seguir las instrucciones del AIR_Android_readme.txt
Por Xyrer el 12 de Junio de 2012
Por Acreonte el 13 de Junio de 2012
No tengo mucha experiencia con Objective-C, he estudiado mucho, leido libros y tutoriales y he hecho algun par de cosas pero no tengo los mas de 10 años de experiencia que tengo con Flash. Aun asi, yo diria que AS3 es mas robusto que Objective-C (quiza porque este ultimo es un lenguaje de los 80's).
Aparte de eso, muy bueno el articulo/tutorial, aunque no creo que era necesario agregar el primer video si lo has escrito aca antes (o viceversa) y la parte 1 (todavia estoy por ver la parte 2) es mas como un apoyo .pps de una presentacion que estas dando.
Espero no tomes mis comentarios a mal, se te agradece mucho tu trabajo y que lo compartas con nosotros
Por Ditmar el 19 de Junio de 2012
Por Reuth el 04 de Marzo de 2013