Tip: Minimizar el código en los constructores
Flash Player, desde su versión 9, posee un compilador JIT (Just in Time), que convierte el código AS3 en bytecode en tiempo de ejecución. La primera vez que se llama a un método de una clase, Flash Player lo interpreta y lo cachea compilado. Las siguientes llamadas que se hagan a esos métodos serán más rápidas ya que el compilador no tendrá que hacer la conversión AS3->bytecode. Esto no pasa con los constructores de las clases, ya que estos son siempre interpretados. Es por esto por lo que tenemos que intentar minimizar el código en los constructores. Lo más recomendable (según mi punto de vista) es acostumbrarnos a utilizar un método init() donde meter el código de inicialización (y que será llamado desde el propio constructor). Así, aunque la mayoría de las veces la diferencia de rendimiento será imperceptible, es una buena práctica que en desarrollos muy grandes puede llegar a notarse.
AIR logo
Bueno, parece que Adobe AIR (Adobe Integrated Runtime) ya tiene logo:

Como comenta Mike Chambers en su blog , este logo representa las tres tecnologías sobre las que se sustena AIR; HTML, FLASH/FLEX y PDF. En breve Adobe hará una presentación oficial, pero han preferido blogearlo antes para que la comunidad de desarrolladores sea la primera en verlo.
A mi personalmente me gusta, aunque todavía me estoy acostumbrando...
Pagerank 5!
Por fin Google reconoce mi esfuerzo y en esta última actualización de PageRank me han dado un 5. No es gran cosa, pero contando con que anteriormente tenía un 2, pues la subida no está nada mal... ![]()
Thermo
Thermo es el codename de la nueva aplicación de Adobe con la que se pretende que diseñadores y desarrolladores trabajen todavía más cerca. Básicamente la podríamos describir como una gran herramienta de skinning para Flex (aunque seguro que será mucho más que eso). En las presentaciones de Chicago y Barcelona pudimos ver un ejemplo del gran potencial de Thermo; dado un archivo de photoshop donde había un wireframe de una aplicación de administración de discos, el ponente (ahora mismo no recuerdo quien era) convertía en componentes los assets gráficos con un par de clicks. Así por ejemplo, convirtió en dos clicks una cajita con un texto en un TextInput donde el texto tenía, mediante CSS, el estilo del original. Y algo parecido hizo "creando" de la nada una barra de scroll completamente funcional...
De nuevo parece que los esfuerzos se centran en optimizar el flujo de trabajo y permitir que desde las diferentes disciplinas de un equipo de desarrollo se ahorre tiempo y se trabaje paralelamente. Realmente, tal y como vimos en la presentación, un diseñador sin ningún conocimiento de programación podía hacer funcionar (con alguna pequeña limitación) una aplicación completa de gestión musical. Se diluye un poco más la línea que separa los desarrolladores de los diseñadores...
No hay fecha definitiva para la salida oficial de Thermo, pero seguro que nos enteramos...
Aquí algunos vídeos de la presentación de Chicago (no los he grabado yo):
MAX is over!
Todo lo bueno tiene un final, y la MAX no iba a ser menos. Tres fantásticos días de conferencias, BOF sessions, Sneaks Peaks y hasta noche de casino. La comida muy buena (aunque un poco escasa), el nivel alto y la gente genial (un saludo a la crew de MadeInFlex! espero veros en otro flash.events.Event
). Ahora sólo queda esperar el nombre de la ciudad elegida para la MAX Europe 2008 y empezar a hacer hucha (la de las Americas ya está concertada y será en San Francisco del 16 al 19 de Noviembre).
A título informativo y por si alguien quiere discutir algún tema, las conferencias a las que he asistido son:
- Flex Best practices (Joe Berkovitz, Steven Webster, Sascha Wolter y Dirk Eismann)
- Beyond the basics of Flex Builder (Waldo Smeets)
- Using Flash and Flex together (Carlos Rovira y Xavi Beumala)
- Local database access with AIR and data sync (Cristophe Coenraets)
- Building AIR applications with Flash CS3 (Grant Skinner)
- Customizing the Flex framework (Ely Greenfield)
- Design-led innovation: Creating disruptive experiences (Steven Webster)
- Optimizing AS3 performance (Cedric Tabin)
- Optimizing Flex applications (Ted Patrick)
- Practical patterns in Flex (Joe Berkovitz)
- Best practices in AS3 (Peter Elst)
- Functional & performance testing with AS3 (Andreas Grabner)
- Creating custom Flex components (Marco Casario)
- Design patterns in AS3 (Leo Schuman)
- Tips and tricks in AIR (Daniel Dura)
- Flash player internals (Lee Thomason)
Intentaré poner algún post profundizando en alguno de estos temas...
Sobre los eventos en AS3
Constructor de la clase Event
public function Event(type:String, bubbles:Boolean = false, cancelable:Boolean = false)
Fases en la propagación de eventos
Se origina en el nodo stage (por ser el que está más "arriba" de todos) y va bajando por las Display Lists hasta llegar al objecto que originó el evento.
Esta fase se produce cuando el evento se procesa en el nodo destino (o target como veremos más adelante), es decir, el nodo que originó el evento.
En este caso el evento recorre el camino inverso al de la fase de capturing. Empezando por el nodo destino, va subiendo hasta alcanzar el objeto stage.
Por defecto sólo se llamarán a los listeners encontrados en las fases de targeting y bubbling.
Nota: para que podamos detectar un evento en su fase de capturing deberemos registrarlo indicando true en el parámetro useCapture del método addEventListener.

To bubble or not to bubble?
El constructor de un evento puede recibir un parámetro boleano bubble que indica si el evento realiza las tres fases que acabamos de comentar. Por defecto su valor es false por lo que sólo se llamará a los listeners que se encuentren registrados en el target (lo que equivaldría a decir que un evento con bubbles a false sólo realiza la fase de targeting). Si el parámetro bubbles es true se realizarán las tres fases mencionadas anteriormente, por lo que se llamarán a los listeners que se encuentren en las fases de targeting y bubbling.
La propiedad eventPhase
La propiedad eventPhase de la clase Event nos permite saber en que fase se encuentra un evento en un momento dado. Puede tener los valores 1, 2 y 3 mapeados a las constantes EventPhase.CAPTURING_PHASE, EventPhase.AT_TARGET y EventPhase.BUBBLING_PHASE. Si por ejemplo queremos capturar un evento en el stage
El parámetro cancelable
El tercer parámetro que acepta el constructor de la clase Event es el de cancelable y como su nombre indica se utiliza para permitir que el evento sea detenido (o cancelado) usando los métodos stopPropagation y stopInmediatePropagation.
Diferencia entre stopPropagation y stopImmediatePropagation
Ambos métodos son llamados sobre la instancia de Event y previenen al evento de seguir propagándose. La única diferencia entre ambos es que, mientras que stopPropagation hará que el evento no se propague a otros niveles, stopImmediatePropagation además hará que el evento no sea recibido en el mismo nivel en el que se encuentra este método (currentTarget).
Diferencia entre target y currentTarget
La clase Event dispone de dos propiedades que son target y currentTarget. La primera hace referencia al DisplayObject que lanzó el evento, mientras que currentTarget indica el DisplayObject que el evento está procesando en el momento de pedir la propiedad (en el nivel en el que se encuentra en ese momento).
Ejemplo: A tiene un hijo B. Si B lanza un evento y A tiene definido un listener para ese evento, cuando B lo procese el target del evento será B y el currentTarget será A. Si el evento es capturado directamente en B, target y currentTarget serán iguales y apuntarán a B.
Eventos globales
Conceptualmente no existen eventos globales en AS3 como los que había en AS2 (ej: MouseMove). Lo más parecido sería registrar un listener en el objeto stage ya que todos los eventos que tengan el parámetro bubbles a true alcanzarán el objeto stage en su fase de bubbling (los eventos de ratón tienen este comportamiento por defecto).
Gracias SmashingMagazine!
Acabo de entrar en www.smashingmagazine.com y me he llevado una agradable sorpresa al comprobar que había ganado The Unusually Useful Web Book; un libro muy interesante sobre usabilidad.
Un saludo a SmashingMagazine!
Y gracias! ![]()
Descuento para la MAX!
Como nos recuerdan desde MIF, sólo quedan dos días (hasta el Viernes 14-Sept) para aprovechar el gran descuento que nos ofrecen desde esta gran comunidad para asistir a la Adobe MAX de Barcelona. Si estáis interesados en ir es una oportunidad que no se puede dejar pasar; el ahorro es de 300€ (descuento)!
Yo ya he reservado mi entrada y me estoy preperando la agenda, aunque hay algunas ponencias que procuraré no perderme:
- Flex best practices (Joe Berkovitz, Steven Webster y Ted Patrick)
- Optimizing ActionScript 3 Performance (CŽdric Tabin)
- Practical patterns in Flex (Joe Berkovitz)
- Creating new Flex Components (Marco Casario)
Espero encontrar mucha gente "de por aquí"...
Aparece en una conferencia de la Adobe MAX!
David Coletta de The Joy of Flex, necesita ayuda para su presentacion sobre optimización que hará en la Adobe MAX (Chicago, 30 de Septiembre). Más concretamente lo que necesita son casos reales de optimización y mejora de la performance en una aplicación hecha en Flex. De lo que reciba, si le es de utilidad hará algún tipo de mención en su conferencia para la MAX.
Si tienes algo que aportar pásate por su post y déjale un comentario. Puede ser muy buena publicidad, y gratis!
Flash Player codename Moviestar
Adobe está a punto de sacar un update de su Flash Player 9 que tiene como codename Moviestar (no confundir con la operadora móvil Movistar). En principio estará disponible una beta en http://labs.adobe.com en algún momento a lo largo del dia de hoy.
Esta última revisión trae como novedad el soporte de video H.264 - estándar utilizado en Blu-Ray® y HD-DVD® - así como de High Efficiency AAC (HE-AAC) para audio. La implicación directa de esta nueva adición es que podremos visualizar contenido HD desde el Flash Player. Parece que una de las pocas ventajas que tenía Silverlight sobre el player de Adobe se ha venido abajo...
Por cierto, desde Google están reencodeando (no creo que esta palabra exista :P) todos los videos de Youtube para pasarlos al formato H.264. Más info aquí.

Calendar
May 2008 M T W T F S S « Mar 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Categories
- AIR (7)
- AS3 (6)
- Eventos (1)
- Flash Player (1)
- Flex (18)
- General (13)
- SilverLight (1)
- Tips (6)
Recently
- 25.03 onAIR Tour
- 25.03 Post sobre eventos en MIF
- 19.03 Adobe MAX 2008
- 29.02 ACE (Adobe Certified Expert) de Flex
- 15.01 @Embed: unable to resolve ‘[asset name here]’ for transcoding
- 14.01 MadeInFlex OnSite II
- 04.12 Lazy initialization
- 21.11 Tip: Acceso al livedocs integrado
- 20.11 Cargar clases dinámicamente
- 19.11 Certificados para aplicaciones AIR
Blogroll



