Comunidad de diseño web y desarrollo en internet online

Imágenes contenidas en un botón

Citar            
MensajeEscrito el 10 Feb 2011 09:13 pm
Hola,

Necesito un botón que contenga una imágen en su interior que se cargue dinámicamente.
Para ello creo un botón con sus tres estados y en cada frame del botón inserto un MovieClip vacio, ya que la imágen no puede ser cargada diréctamente al botón (el clip hace de contenedor).

En la carga de la imagen externa no tengo problemas, pero solo se actualiza para un estado...Sé que en el botón se ha de actualizar para todos sus estados (upState,downState, overState). Aunque actualice los tres estados solo parece hacerle efecto sobre el último que indique....El MoviClip en out y over es el mismo solo que en Over escalado. También lo he probado con dos Mc distintos para cada estado pero no funciona tampoco...

El pseudo código sería así (me ahorro lo de la carga etc):

Código ActionScript :


//....UP STATE
var objUp:Object;
objUp= myButton.upState;

var imageHolderUp:MovieClip; 
imageHolderUp=objUp.getChildAt(0) as MovieClip; //Donde tengo el MovieClip xa la imagen

imageHolderUp.addChild(loader.content); 

//....OVER STATE
var objOver:Object;
objOver= myButton.overState;

var imageHolderOver:MovieClip; 
imageHolderOver=objOver.getChildAt(0) as MovieClip; 
imageHolderOver.addChild(loader.content); 



Más o menos la cosa (resumida) sería así...Si pongo al final OVER se ve la imagen en over si lo hago al revés, se vé solo en Up...
Como si se 'machacara' la info...Tengo otros elementos como texto dinámico que si los actualizo en los dos estados me aparece la info correctamente en ambos, solo me pasa con las imágenes externas

Gracias de antemano!

Por emedmaria

73 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Feb 2011 09:53 pm
BuenAS:

Me da la impresión de que cargas una sola imagen y por tanto se queda (loader.content) en el último MovieClip al que haces addChild().

Puedes utilizar la clase Bitmap y BitmapData para crearte una copia de la imagen y añadirla al segundo MovieClip.

Código ActionScript :

var imagenA:Bitmap = Bitmap(loader.content);
var bmpd:BitmapData = new BitmapData(imagenA.width, imagenA.height);
bmpd.draw(imagenA);
var imagenB:Bitmap = new Bitmap(bmpd, "auto", true);

Y añades imagenA al primer MovieClip e ImagenB al segundo.

He escrito directamente aquí por lo que seguro lleva alguna errata.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Feb 2011 07:46 am
supongo que tu botón es de la Clase "SimpleButton". Entonces tus variables objOver u objUp deberían ser de tipo "DisplayObject" (no de tipo "objet" -si no no va a saber qué hacer con getChildAt(0)
Aseguraté que getChildAt(0) es tu MC.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Feb 2011 08:08 am
...en mi comentario anterior, no sé en qué estaba pensando. No es necesario crear un nuevo Bitmapdata y copiar los pixels, basta asignarle al nuevo Bitmap el BitmapData de la imagen cargada.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 11 Feb 2011 08:16 am
Sí, sí Eliseo contadaba con que debía ser un DisplayObject. Ha sido un despiste al escribir rápido y copy+paste :) Gracias por el apunte :)

Lukanicos! Efectivamente el problema era que no había duplicado el Bitmap y trabajaba siempre con la misma imagen.

MIL GRACIAS!!!!

Por emedmaria

73 de clabLevel



 

chrome

 

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