Modularización con Adoble Flex

21
Apr/08
6

Una característica importante que tiene Flex es a la hora de crear módulos, este provee un componente el cual sirve para cargarlos (estos son SWF, el “ejecutable” que compila Flex), el Cargador de Módulos se crea de la siguiente forma:

<mx:ModuleLoader id="CargadorModulos" url="ejemplo_modulo.swf" width="100%" height="100%" />

Este se comporta como cualquier otro componente y tiene las típicas propiedades como width y height, donde podemos definir el tamaño de este, como también incluye la propiedad url, que será el modulo a cargar, en este ejemplo se cargará el modulo “ejemplo_modulo.swf”. Si queremos accesar desde el modulo a propiedades u objetos de la aplicación principal debemos importar lo siguiente (dentro de nuestro modulo):

<mx:Script>

<![CDATA[

import mx.core.Application;

private function init():void {

Application.application.ObjetoDesdeAplicacion.Metodo();

}

]]>

</mx:Script>

 

Puede ser que necesitemos ejecutar una función al momento de que cargue el módulo, como ya creamos la función init() debemos agregar la propiedad “initialize” a nuestro modulo:

<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%" height="100%" initialize="init()">

Ahora supongamos que queremos cargar otro modulo desde “ejemplo_modulo.swf” para esto simplemente podemos hacer lo siguiente (suponiendo que estamos agregando esto al CDATA de Script:

<mx:Script>

<![CDATA[

private function FuncionCargaOtroModulo():void {

Application.application.CargadorModulos.url = "otro_modulo.swf";

}

]]>

</mx:Script>

 

Pueden bajar el ejemplo completo donde encontrarán como crear menús y como tratar los eventos de estos para cargar un nuevo modulo.

Ejemplo de Modularización en Flex

Comments (6) Trackbacks (0)
  1. Christian Arias
    8:48 am on November 18th, 2008

    Hola Andrés

    Muy contento por poder entrar a su blog llevaba meses intentando acceder.. (estás bien posicionado en google), para conocer los temas que tratas acerca de fléx y demás…

    Le escribo para animarlo y contarle que sus temás además de ser muy oportunos están bien explicados y muy bien desarrollados…

    Gracias…

    Un saludo desde Colombia…

  2. Jorge
    2:50 pm on December 11th, 2008

    Muy interesante el ejemplo. Estoy haciendo algo parecido y buscando como resolver un problema que tengo he eoncontrado esta página.
    Sobre el tema este de los módulos. Hay alguna manera que el módulo que cargamos sepa en que ModuleLoader está cargado? Por ejemplo, yo tengo un módulo que no se en que ModuleLoader está cargado (realmente lo se, pero hay veces que está cargado en uno y otras en otro). Si yo desde este módulo quiero cambiar la url del MóduleLoader en el que está cargado como puedo hacerlo?
    Un saludo y gracias.

  3. Juan Felipe
    1:22 pm on March 12th, 2009

    Hola Andres, Muy bueno tu articulo, era justamente lo que estaba buscando, ahora lo que necesito es que estos modulos que se cargan se ubiquen en el centro de la pantalla y que sean movibles, alguna idea?

    No olviden entrar a confiezateya.com

  4. Juan Felipe
    2:14 pm on March 12th, 2009

    Otra cosa que sería util incluirla en este post sería la posibilidad de cambiar de menu dependiendo del usuario logeado, es decir, que el menú que tu ubicaste en la interfaz principal pueda cambiarse por otro dinamicamente. Para que dependiendo del usuario logeado acceda a ciertas interfaces o a otras no.

  5. Juan Felipe
    7:42 am on March 19th, 2009

    Hola, ya logré hacer las funcionalidades que mencionaba en los comentarios anteriores, lo unico que me hace falta es como hacer para que el modulo sea movible, aunque eso creo que ya es parte de cada modulo y no tiene que ver con la Shell, se me ocurre que podría hacer que el modulo llamado cargue un popUp con una TitleWindow… bueno iré a probarlo a ver que pasa.

    Saludos y no olviden entrar a confiezateya.com está buenisima.

  6. eChicho
    8:55 am on November 14th, 2009

    Muy bueno el comentario, los fuentes no descargan. Saludos.

Leave a comment

No trackbacks yet.