Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

MadeInFlex

Fx4 IX. Ciclo de vida de un componente spark

Marzo 15th, 2010 - [Enlace local]

Al desarrollar aplicaciones, y en nuestro caso, con tecnología Flex/AS3, debemos conocer el ciclo de vida de los componentes del framework para así entender la interacción y como sacarles el máximo provecho. Conocer bien el ciclo de vida de los componentes nos servirá para evitar errores al trabajar con ellos.

En este artículo veremos como funciona el ciclo de vida en los spark components. Estos componentes siguen un ciclo de vida parecido a los Halo components, pero con algunas diferencias. Antes de ver estas diferencias, creo necesario hacer un repaso al ciclo de vida de los Halo components.

¿Porqué necesitamos que los componentes tengan un ciclo de vida?

El Flash player funciona con una secuencia de frames. Cada frame tiene la siguiente forma:

Captura de pantalla 2010-03-10 a las 08.00.37

En nuestra aplicación hay mucho código que no necesita renderización, como cálculos, iteraciones por colecciones, etc.
En cambio hay código que requiere la actualización del componente, pongamos un ejemplo:
Si cambiamos el width de un container, queremos que este se actualize y de paso que actualize el tamaño de sus hijos. El ciclo de vida hará que estos cambios se apliquen, debido al flujo de etapas que él mismo define.

El ciclo de vida de los Halo components

Los Halo components tienen un ciclo de vida compuesto de tres etapas:

Etapa de creación

Consta de cuatro fases que se ejecutan en el orden en que se explican a continuación:

Etapa de la vida del componente

A partir de los cambios que recibe el componente, éste pasa por diferentes fases:

vida

Proceso de invalidación

Los cambios hechos en las propiedades, estilos y subcomponentes son marcados para que sean actualizados.
Hay tres métodos para la invalidación:

Proceso de validación

Es la respuesta al proceso de invalidation. Renderiza los cambios marcados en la etapa de invalidation.

Métodos para la validación:

La validación ejecutará la etapa de actualización del componente de manera que los cambios que se han producido, sean renderizados.

La relación entre los métodos de cada una de las etapas es la siguiente:
validation

Etapa de destrucción del componente

Ocurre cuando el componente se elimina de la displaylist. Luego se llama al garbage collector para eliminar los elementos no referenciados.

¿Qué ha cambiado en Flex 4?

La verdad es que, en cuanto a ciclo de vida, no ha cambiado mucho. Spark se ha construido encima de Halo.

La mayor diferencia es que Spark separa la skin del propio componente, pero existe un contrato entre ambos, un contrato que obliga al componente a definir los datos, partes y estados que tendrá su skin. como muestra tenemos a SkinnableComponent, que extiende de UIComponent, por lo tanto tiene el mismo ciclo de vida, pero tiene una skin que sigue su propio ciclo de vida.

Ciclo de vida de la skin

Una skin puede tener partes estáticas y partes dinámicas. Cuando se ejecuta el createChildren() de un SkinnableComponent, este invoca a validateSkinState(), que a la vez invoca a attachSkin(). La función attachSkin() crea la skin con las partes declaradas y la añade como un hijo del componente.

Cuando muere el componente, se van quitando las partes de la skin y finalmente se destruye la skin. Así se da fin al ciclo de vida de la skin.

Conclusión

Se ha dado un paso a vista de pájaro de lo que es el ciclo de vida en los spark components. Respecto al ciclo de vida de un SkinnableComponent, para entenderlo con claridad es mejor ver y codificar ejemplos. A continuación os dejo unos links que espero que os sirvan.

http://www.developmentarc.com/site/wp-content/uploads/pdfs/understanding_the_flex_3_lifecycle_v1.0.pdf
http://www.flex888.com/1219/flex-4-components-life-cycle.html
http://www.artima.com/articles/flex_spark.html
http://opensource.adobe.com/wiki/display/flexsdk/Gumbo+Skinning
http://www.adobe.com/devnet/flex/articles/flex4_skinning.html
http://miti.pricope.com/2009/08/16/skinning-a-list-in-flex-4-magnifier-effect/

» Leer más, comentarios, etc...

Información legal y técnica