Novedades de AS3 (I)
Comenzamos, cargados de buenas intenciones, una serie sobre las novedades en la nueva iteración del lenguaje de programación asociado a Flash, ActionScript.
ActionScript ha evolucionado muy rápidamente en los últimos años, pasando de ser un lenguaje de script que permitía realizar algunas manipulaciones básicas sobre objetos gráficos, a un lenguaje de alto nivel orientado a objetos, basado en el estándar ECMAScript 4, con el que se pueden construir aplicaciones web de gran complejidad, basando el desarrollo en las metodologías comunes al resto del desarrollo de software.
Comenzamos hoy, pues, con un rápido repaso, a vista de pájaro, por las novedades en esta revisión del lenguaje, novedades y cambios que iremos desarrollando con más detalle y con ejemplos que esperamos sean suficientemente ilustrativos.
La primera novedad a resaltar, sobre todo por el cambio que puede suponer para muchos en la forma de programar en ActionScript es que, por fin, las clases son selladas por defecto. Por tanto, ya no se pueden crear en tiempo de ejecución métodos ni propiedades de una clase (que es lo que siempre se había hecho, por ejemplo, al crear variables en el ámbito de un mmovieclip), salvo que esa clase se declare explícitamente como dinámica. La principal ventaja de esta arquitectura es que la comprobación de tipos se puede hacer en tiempo de compilación, en vez de en tiempo de ejecución, por lo que se gana, por un lado en seguridad, ya que si hay alguna asignación de tipos incorrecta va a ser detectada en tiempo de compilación, por otro, se gana en agilidad en ejecución, ya que no hay que ir comprobando continuamente que los tipos coinciden, y finalmente se disminuye el consumo de memoria, ya que no es necesario mantener una estructura dinámica en memoria (por ejemplo un hashmap) por cada clase con todos sus métodos y propiedades. Huelga decir, por supuesto, que esos dos son sólo argumentos de apoyo a la verdadera razón de la existencia de las clases selladas: el encapsulamiento, la abstracción de datos. Sobre todo si se deja el control al desarrollador sobre ese encapsulamiento.
El especificador de acceso por defecto para métodos y propiedades ha cambiado. Ya no es public, sino internal, equivalente al protected de Java. Un cambio lógico y necesario, ya que no tiene mucho sentido el construir clases, entidades supuestamente encapsuladas, cuyo modificador de acceso por defecto rompe ese encapsulamiento.
Nuevos tipos. Si una de las pretensiones con las que se plantea la nueva versión del lenguaje es la de mejorar la performance, se hace necesario el implementar nuevos tipos de datos numéricos. Ahora ya hay int (enteros) y Number (float).
La estructura de los ficheros que contienen las declaraciones de las clases también ha cambiado. Al igual que en otros muchos lenguajes, se puede declarar más de una clase en un único fichero, aunque con una condición: al menos una de ellas ha de estar declarada como pública, y debe tener el mismo nombre que el fichero.
También se ha reorganizado toda la API del player, de forma que la organización por paquetes es mucho más lógica y racional.
El sistema de eventos también se normaliza, y se estructura alrededor de una clase base, siguiendo el sistema de eventos del DOM3. Todos los eventos que se quieran emitir, se deberán modelar según la nueva estructura.
Y por fin, hay una nueva arquitectura para representar los elementos gráficos, tanto en lo referente a las entidades que se pueden utilizar para representarlas, como en la forma de hacer efectiva su presentación gráfica. Por fin, los gráficos se desacoplan de la posible lógica asociada a los mismos (la clase MovieClip, por ejemplo, lleva agregado su gráfico, sin ser parte intrínseca de ella), y se crean entidades para cada tipo de gráfico (Graphic, Sprite. etc). La forma de mostrarlas en pantalla sigue siendo similar a la anterior, aunque conceptualmente es muy diferente. La estructura de un swf ya no está formada por movieclips creado dentro de movieclips de forma recursiva, sino que se basa en una clase llamada DisplayList, que implementa un estructura similar a la del DOM html.
Hay mucho más. Delegates, Overrride, XML, enclosures, reflection, bucles for in. Muchas cosas como para tratarlas en un único post.
Por eso, vamos a ir construyendo paso a paso una pequeña aplicación (un reloj basado en el Modelo-Vista-Controlador), que nos permitirá ir conociendo, una por una, muchas de las novedades del lenguaje. Para ello, utilizaremos la Alpha Pública de Flash Professional 9, disponible en Adobe Labs.
Intentaremos, plantear el desarrollo de la forma más neutra, sin crear dependencias ni vinculaciones, en lo posible, con características específicas de la forma de hacer las cosas en Flash, como las root custom class.
Pero eso será en próximos posts.
Comentarios
La aplicación MVC del reloj en as3 suena muy bien Cesar. Lo esperamos con ganas ;)
Saludos
Publicado por: danisan | Noviembre 10, 2006 01:39 PM