Flex SDK

Cambiar Flex Library (swc) por Módulos

Este debate contiene 14 respuestas, tiene 2 mensajes y lo actualizó Imagen de perfil de Carlos Rovira Carlos Rovira hace 3 años, 6 meses.

Viendo 15 publicaciones - del 1 al 15 (de un total de 15)
  • Autor
    Publicaciones
  • #6537
    Imagen de perfil de Guillermo
    Guillermo
    Participante

    Buenas,

    Tengo una aplicación dividida en librerías, esas librería se corresponden por cada pestaña del menu que tengo en mi aplicación.
    Ahora bien, me gustaría cambiar las librería por módulos y cargarlos sólo cuando se pincha en cada pestaña.

    Alguien sabe como podría hecerlo?

    Muchas Gracias de antemano.

    #6540
    Imagen de perfil de Carlos Rovira
    Carlos Rovira
    Jefe de claves

    Buenas Guillermo,

    he cambiado el hilo de foro ya que tenemos el foro de Flex SDK que es más apropiado.

    la forma más sencilla de hacerlo es hacer que cada una de tus librerías tenga un modulo insaciable como punto de entrada a dicho modulo.

    Esto generará un SWF que podrá ser cargado solo por otro SWF principal (no por si solo).

    En la zona de la aplicación que gestiones la carga tienes que usar un ModuleLoader y cada opción del menu cambiara la url de carga de dicho componente para ir cargando uno modulo u otro.

    En el siguiente ejemplo el parámetro url debe de cambiar conforme seleccionemos una opción de menú u otra:

    • Esta respuesta fue modificada hace 3 años, 6 meses por Imagen de perfil de Carlos Rovira Carlos Rovira.
    • Esta respuesta fue modificada hace 3 años, 6 meses por Imagen de perfil de Carlos Rovira Carlos Rovira.
    #6544
    Imagen de perfil de Guillermo
    Guillermo
    Participante

    Gracias por la respuesta Carlos, me estaba volviendo loco buscando el hilo dentro del Foro General !!!!! 🙂

    Esto que me has contado fue la primera opción que se me vino a la cabeza pero tengo el siguiente problema:

    – Al tener mi código en librerías, estas generan un swc que luego las importo en otra librería contenedor que se encarga de añadirlas o quitarlas de la vista.
    Entonces, yo me creo un módulo en una de mis liberías, dentro del módulo cargo la vista principal de ésta:

    A la hora de compilar. sólo me compila el swc como miLibrería.swc y no miModulo.swf
    Despues, en el caso de que me compilara el swf, como le digo a la librería/contenedor que carge estos módulos??, es decir, me debería crear una carpeta modules, o simplemente en el raiz del swc del contenedor y allí meter los módulos??

    Muchas Gracias.

    #6546
    Imagen de perfil de Carlos Rovira
    Carlos Rovira
    Jefe de claves

    Buenas Guillermo,

    El problema que tienes es que la librería genera un SWC y no el SWF, el modulo debe ser generado como SWF y lo debes colocar en tu servidor como un recurso más para que pueda ser cargado. A este respecto mi consejo es que o bien crees el modulo dentro de tu proyecto principal (lo más sencillo) o crees un nuevo proyecto donde resida el modulo. Sea cual sea la opción el SWF generado lo debes colocar, como te decía, como recurso estático y cargarlo con el ModuleLoader.

    Dado que el modulo usará classes y componentes de la librería tendrás que hacer depender dicha proyecto (ya sea el de aplicación o el de modulo, si has optado por esta opción) de tu librería.

    Por último y para mejorar la configuración, considera el usar las librerías como RSL (esto no es necesario pero es recomendable)

    Ten en cuenta que una librería son clases / recursos que no son “instancias” solo “definiciones” que se podrán usar en un momento dado en la aplicación.

    En cambio una aplicación o modulo es un ejecutable que “instancia” clases y componentes y por tanto genera en memoria un uso de los mismos.

    Para terminar a la hora de cargar, como te decía en el anterior hilo, la carga es con el ModuleLoader y se le pasa la url a cargar. En este caso “/path/to/module/mimodulo.swf”. Es decir un recurso estático como si cargaras una imagen. Lo cual difiere mucho de “instancias” una clase de la librería y *hacer uso* de la misma. Por tanto, estás “cargando” el modulo como recurso externo y no declarando una variable o instanciandolo.

    #6547
    Imagen de perfil de Guillermo
    Guillermo
    Participante

    Hola Carlos,

    Lo que voy a hacer es crearme un proyecto nuevo y ahi me crearé tantos módulos como liberías tenga, dentro de esos módulos haré referencia a esos swc y despues de gnerar los swf de los módulos los cargaré desde el contenedor general.

    Muchas Gracias Carlos.

    #6548
    Imagen de perfil de Carlos Rovira
    Carlos Rovira
    Jefe de claves

    Correcto, lo mejor es proyecto por modulo y puedes tener una o varias librerías compartidas (según tu necesidad) linkadas como RSLs desde la aplicación y como “external” en tus módulos. Eso es lo más óptimo.

    Suerte! 🙂

    C.

    #6549
    Imagen de perfil de Guillermo
    Guillermo
    Participante

    Bueno pues mal empezamos 🙁

    Me he creado un nuevo proyecto con 4 módulos, cada uno de esos módulos hacer referencia a un swc.

    He ido cargando los módulos mediante el Module Loader pero al cargar el primero, independientemente de cual sea me sale el siguiente error:

    Sin embargo si en vez de cargar el swc por módulo lo llamo directamente en la aplicación, funciona sin problemas.

    Tengo que poner alguna propiedad en las propiedades de compilación??? O es que he hecho algo mal?

    Muchas Gracias.

    #6550
    Imagen de perfil de Carlos Rovira
    Carlos Rovira
    Jefe de claves

    Puede ser esto?

    https://issues.apache.org/jira/browse/FLEX-28446

    Estás usando Flex 4.0?

    #6551
    Imagen de perfil de Guillermo
    Guillermo
    Participante

    Sí, estamos utilizando el sdk 4.0

    #6552
    Imagen de perfil de Carlos Rovira
    Carlos Rovira
    Jefe de claves

    Por lo que dice el ticket parece que es una regresión en esa versión (no especifica si hay fix después, pero entiendo que en versiones posteriores ese problema no existe…para mi hace mucho desde que estuve con la 4.0 y ya no lo recuerdo, poco más te puedo decir).

    ¿No podéis pasar a una versión más moderna? (ya puestos Apache Flex 4.12). Ten en cuenta que la 4.0 es muy antigua.

    #6553
    Imagen de perfil de Guillermo
    Guillermo
    Participante

    El problema es que la aplicación se inició hace unos 4 años y decicieron utilizar el 4.0 y la aplicación ha crecido tanto que es casi imposible cambiar temas de arquitectura sin tener que rehacerla entera, (yo cuando llegué al proyecto ya estaba todo así) por eso no podemos cambiar el sdk.

    #6554
    Imagen de perfil de Guillermo
    Guillermo
    Participante

    Acabo de cambiar el sdk al 4.5 para probar y me sale el siguiente error:

    Las imágenes que estamos utiilzando en el proyecto las tenemos embedidas en una clase:

    y eso parece no gustarle con este sdk.

    #6555
    Imagen de perfil de Carlos Rovira
    Carlos Rovira
    Jefe de claves

    Como aquí se da una regresión de una versión particular de Flex y además una aplicación que lleva varios años en desarrollo, quizá te deberías de replantear todo sabiendo lo que sabes ahora.

    Mi consejo es que busques algo más por la web sobre el error #1009 y que veas si alguien ofrece alguna solución. Si por ese lado no consigues nada, quizá deberías replantear si merece la pena pasar a Modulos o no.

    El migrar una aplicación cuando no se ha hecho de forma progresiva suele ser costos ya que suelen darse muchas malas prácticas y problemas, por lo que en caso de plantearte una migración, esa opción puede requerir tiempo y costes significativos que seguramente tendrás que validar con otras personas.

    #6560
    Imagen de perfil de Guillermo
    Guillermo
    Participante

    Al final he decidido dejarlo todo como está porque nos va a costar más modularizar la aplicación que lo que cuesta la propia aplicación.

    Muchas Gracias por todo Carlos.

    Un saludo.

    #6561
    Imagen de perfil de Carlos Rovira
    Carlos Rovira
    Jefe de claves

    A veces es mejor replantearse estos temas. Es una pena, pero es así…

    saludos

Viendo 15 publicaciones - del 1 al 15 (de un total de 15)

Debes estar registrado para responder a este debate.

Acerca de Made In Flex

Made In Flex es una comunidad de desarrolladores de Apache Flex creada en 2006.

Apache Flex, anteriormente conocido como Adobe Flex, es un SDK (kit de desarrollo de software) para crear aplicaciones enriquecidas - multiplataforma basadas en Adobe Flash donado por Adobe a la fundación Apache in 2011 y promocionado a proyecto de primer nivel en Diciembre de 2012.

Actualmente estamos cambiando muchos aspectos del sitio web para ofrecer un sitio útil para toda la comunidad que tenga en cuenta las necesidades actuales.

Últimas Fotos

Instalador de Apache Flex

Entrar o Registrase