que propiedades propiedad grow espacio entre ejemplo contenedor columnas flex optimization module flash

propiedades - flex propiedad



Optimizar Flex cuando se usan múltiples módulos (5)

Podrías mirar en la clase ModuleLoader , quizás puedas cargar tus cosas centrales en las primeras 200kbs y luego cargar el resto cuando sea necesario.

También vale la pena tener en cuenta que cualquier SWC que utilice estará incrustado en tiempo de compilación mientras que cualquier SWF se cargará en tiempo de ejecución.

Tengo una aplicación Flex donde el tiempo de carga es extremadamente importante (sitio del consumidor). Quiero ser capaz de obtener algo en la pantalla y luego permitir que se carguen módulos adicionales según sea necesario.

El problema al que me enfrento es que la suma total de todos los módulos es mucho mayor que si tuviera que incluir todos los componentes en un solo archivo .swf.

Es bastante obvio por qué. Por ejemplo, las clases necesarias para el acceso al servicio web parecen tomar alrededor de 100 kb. Si no utilizo esas clases en mi main.swf, se incluirán en CADA módulo que las use. Entonces, si tengo 5 módulos, se desperdician 500k adicionales.

En teoría, quiero 3 niveles

main.swf - mínima disposición posible / estilo / fuente / tipo de estructura cosas comunes.swf - clases adicionales que necesita el módulo 1 + módulo 2 (como servicios web) module1.swf - módulo 1 en el sitio module2.swf - módulo 2 en el sitio

No sé si esto es posible.

Me pregunto si puedo cargar archivos swz / swf para partes del framework en lugar de todo el framework.

Realmente necesito bajar el tamaño de mi aplicación principal a 200 Kb. Crece a 450 kb cuando agrego servicios web y funcionalidad básica de cuadrícula de datos.

Cualquier lección aprendida sería apreciada.


Flex es un poco cerdo cuando se trata de tamaño de archivo. Solo hay una forma de reducir el tamaño de tus aplicaciones y es usar un swz externo para el framework. Hay un artículo de Adobe Devnet sobre Mejora del rendimiento de la aplicación Flex utilizando la memoria caché de Flash Player que recomiendo leer.

En un proyecto en el que trabajé, tuvimos problemas con nuestro módulo de precarga que aspiraba clases que no queríamos. Lo que teníamos que hacer era crear interfaces con las clases que residían en los otros módulos y hacer referencia a ellas de esa manera. Cuando se carga el módulo, simplemente asignamos una referencia al IApplicationModule para llamar a nuestro código de inicialización.

También busque poner sus clases en un archivo SWF separado y luego use ApplicationDomain para obtener acceso a las clases

(este código tomado de esta publicación en el foro explica cómo acceder a las clases cargadas desde los módulos en Flex)

private function loadContent(path:String):void { var contentLoader:Loader = new Loader(); contentLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, loadContent_onComplete); contentLoader.load(new URLRequest(path)); } private function loadContent_onComplete (event:Event):void { var content:DisplayObject = event.target.content; if(content is IFlexModuleFactory) { var content_onReady:Function = function (event:Event):void { var factory:IFlexModuleFactory = content as IFlexModuleFactory; var info:Object = factory.info(); var instanceClass:Class = info.currentDomain.getDefinition( info.mainClassName) as Class; addChild (new instanceClass ()); } content.addEventListener ("ready", content_onReady); } else { addChild (content); } }


Existe una opción en el compilador de línea de comandos para excluir las definiciones de clase que ya están compiladas en otro swf. Funciona así:

  1. Compile la aplicación principal (que contiene un cargador) y opte por generar un informe.
  2. Compile el Módulo y opte por excluir clases en el informe anterior.


Sé que esto fue hace un tiempo, pero pensé que publicaría otra respuesta en caso de que alguien todavía esté buscando una respuesta al respecto.

He estado buscando optimizar aplicaciones Flex y, después de comprobarlo, he decidido usar Módulos. Principalmente porque tienen buenas opciones para la optimización.

Los dos comandos mxmlc que necesita son:

mxmlc -link-report=MyAppReport.xml MyApp.mxml

y

mxmlc -load-externs=MyAppReport.xml MyModule.mxml

Mi swf externo (usando el Marco Flex) ahora tiene solo 21k. Está haciendo mucho (aún), pero a medida que lo hace más y más, continuará utilizando los recursos del código de la aplicación principal.

Aquí está el archivo por lotes que creé para acelerar el proceso (debe poner mxmlc en su variable de ruta del entorno para que funcione de esta manera. Panel de control -> Sistema -> Avanzado -> Variables del entorno, Editar la variable del sistema de ruta, agregar la ruta a su mxmlc (requiere un reinicio)):

cd C:/Projects/MyProject/Develop/Modules mxmlc -link-report=MyAppReport.xml C:/Projects/MyProject/Develop/Source/Main.mxml mxmlc -load-externs=MyAppReport.xml MyModule.mxml move /Y MyModule.swf ../Runtime/Modules

Más información aquí: http://livedocs.adobe.com/flex/3/html/help.html?content=modular_4.html

¡Espero que ayude!