Comunidad de diseño web y desarrollo en internet online

"Sprite" de imagenes en Flex

Citar            
MensajeEscrito el 13 Ago 2010 12:43 pm
Tengo una gran aplicación que carga multitud de imágenes. Pero cuando tu aplicación es muy grande y sobre todo muy usada el uso de gran cantidad de imágenes pequeñas puede crear gran cantidad de peticiones en el servidor y retardarlo.

Es mucho mejor cargar un archivo grande que 50 pequeños. Ahora bien lo que deseo crear y lo que he visto en alguna aplicaicón es que usan un archivo swf con las imágenes.

Me refiero a algo como esto pero en flash, cargado un archivo imagenes.swf:



Y cargar las imágenes en un botón mediante icon="@Embed(source='imagen.jpg')" y mediante un objeto Image y el metodo load.


Un saludo y gracias.

Por Ping

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Ago 2010 01:13 pm
¿Es una pregunta o un tip?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Ago 2010 01:47 pm
Si la pregunta es como se puede hacer eso en flex

Por Ping

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Ago 2010 01:53 pm
En un componente SWFLoader (o Loader) cargas el swf, luego accedes al timeline principal de lo cargado por Loader.content ... el tema es que tienes instancias que no puedes manipular por código (no puedes hacer un new XXX, addChild) sino mover directamente las instancias ... es decir, si lo cargas en un contenedor en donde necesitas mover todo está bien, pero si necesitas disponer de los íconos en distintos contenedores y estados, no lo veo una solución viable ... de hecho esto es posible en contextos muy específicos

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Ago 2010 01:59 pm
A ver si me explico bien, por ejemplo en una aplicación que me he descargado y viendo como funciona tiene lo siguiente

en su css
upSkin: Embed("assets.swf#firefox_close_up");
downSkin: Embed("assets.swf#firefox_close_down");
overSkin: Embed("assets.swf#firefox_close_over");
disabledSkin: Embed("assets.swf#firefox_close_disabled");

El archivo assets.swf tiene las imágenes integradas y las selecciona con eso.

Con este ejemplo a ver si nos referimos a lo mismo.

Saludos y gracias por contestar

Por Ping

16 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Ago 2010 02:15 pm
Ok, veo que hace referencia a archivo+nombre de instancia (o vinculación), desconocía eso, aunque he utilizado archivos swc para compactar assets en un solo archivo que pones en el classpath, http://www.artima.com/articles/images_in_flex.html

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Ago 2010 02:42 pm
BuenAS:

Por un lado, aclarar que cuando utilizas "@Embed", la imagen se INCRUSTA en el swf cuando se compila; ya sea si lo utilizas directamente en un mxlm como a través de css.

Flex tiene la posibilidad de dividir tu aplicación en módulos e ir cargando los que se vayan a utilizar en cada situación. Es bastante largo de explicar cómo se utilizan, por lo que te remito a la ayuda de Flex.

Por otro lado, no sé si te refieres a trabajar con bibliotecas compartidas. O sea, varios swf's van a compartir determinados assets (imágenes, botones, gráficos vectoriales). Sólo uno de ellos lleva dichos assets, y el resto accede a ellos una vez que el primer swf (el contenedor) está en la caché. Flash Professional tiene un assistente que te permite hacerlo casi automáticamente: decides qué swf va a actuar como "buque nodriza", creas los assets en su biblioteca, y vinculas el resto de bibliotecas de swf's a esta biblioteca.

Finalmente, y siempre que no haya problemas de crossdomain, por lo que si vas a probar con esto, sería recomendable que el swf que vas a cargar esté en el mismo dominio de seguridad (cuando funcione, ya lo cambias y tal :) ), puedes cargar un swf desde otro y llamar a funciones del primero para obtener sus assets. Esta técnica se ha utilizado bastante sobre todo en el tema de juegos.

Así, sí en el A.swf hemos implementado el método:

Código ActionScript :

function obtenerImagenFondo():Bmpd
{
   return new ImagenFondo();
}

donde ImagenFondo es una imagen exportada para ActionScript que está en la biblioteca de A.swf

Si cargamos A.swf, desde B.swf, una vez que se produzca en evento INIT (no es necesario esperar a COMPLETE), podemos acceder al método obtenerImagenFondo(), que nos devolvería una instancia de ImagenFondo.

Vuelvo a repetir que si vas a utilizar esto último te asegures de que cargas A.swf dentro del dominio de B.swf; si no te va a empezar a emitir mensajes de error de seguridad del SandBox.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.