de embedding assets y peso final
Recientemente estaba tratando de optimizar un proyecto en flex (tratando de reducir el peso del swf final), ya que de todas maneras el framework the flex nos regala apróximadamente 100kb (usando algún uicomponent de la familia
Pensábamos que el embeder el mismo asset desde diferentes mxml, nos resultaría en una swf final de mejor tamaño; estos fueron los resultados.
las pruebas concistieron en probar las diferentes formas de embeder imágenes dentro de una aplicación de flex, en estas pruebas usé el mismo jpg (16kb)
Prueba 1: simple embeding
Embedir una imagen de manera normal para tener el peso final de un swf "normal" (asignando el valor del embed a una variable tipo clase, y usando esta como source del objeto image)
[code]
[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var asset:Class;
]]>
Peso del swf: 139kb (gracias por lo 123kb, adobe)
Prueba 2: embediendo la image dos veces, mismo archivo
Esta vez se embede directamente la imagen en un objeto Image, y el source del otro se hace igual que en el ejemplo anterior.
[code]
[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var asset:Class;
]]>
Peso final del swf: 139kb
Prueba 3: mismo jpg, diferentes mxml, mismo nombre
Esta vez, utilizo el archvo en un componente externo
AssetInComponent.mxml
[code]
[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var asset:Class;
]]>
y lo importo dentro de la aplicación principal, donde también embedo la imagen;nótese que ambos nombres del la variable tipo Class tienen el mismo nombre),
[code]
xmlns:local="*"
layout="absolute"
height="425">
[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var asset:Class;
]]>
[/code]
Peso final del swf: 140kb (hey!, estamos agregando un xml externo, está bien que este pese 1kb!)
Prueba 4: mismo jpg, diferentes archivos, diferente nombre
Utilizando el mismo archivo que en el ejemplo anterior (AssetInComponent.mxml), pero esta vez la variable local tiene un nombre diferente
[code]
xmlns:local="*"
layout="absolute"
height="425">
[Embed(source='/assets/frogcr.jpg')]
[Bindable]
public var localAsset:Class;
]]>
[/code]
Peso final del swf: 140kb
Resumen
Prueba 1: 139kb
Prueba 2: 139kb,
Prueba 3: 140kb,
Prueba 4: 140kb
Conclusión
No hace falta ser ciéntico nuclear para darnos cuenta que no afecta en lo más mínimo cuántas veces se embeda un mismo asset en diferentes o en mismos archivos, claro lo ideal es poder tener los archivos en un solo lugar para asi sólo editar un lado en el caso de cambiar el asset o el nombre del mismo (acá es cuando mr Singleton nos viene de maravilla).
Pues que mal, que los swf pesen tanto, pero que bien que la librería no sea tan tonta y reconozca un asset para evitar aplicaciones aún más pesadas (recuerdo que el desktop de computadora.de pesaba 85kb, y eso que era un casi que shell =/ )
mr. zip vivé acá
Que buen test!! .. simple pero muy útil para saber como el comportamiento con archivos cargados.
Saludos kada!!!