Ayuda con funciones
2 seguidores
Hola, testoy haciendo una galería de imágenes y tengo un problema que no sé como resolver.
Lo que necesito hacer es lo siguiente:
Cada vez que clicas al botón "siguiente", necesito calcular el valor _alpha de todas las imágenes del clip. Luego, sabiendo qué imagen es la que tiene el valor _alpha = 100, ejecutar una acción con dicha imagen
Mis conocimientos de flash son un poco limitados y esto se me escapa.
Alguien sabría cómo hacerlo?¿
Muchas gracias de antemano!
tpmmds
Hola:
Si las imágenes las tienes en el movieClip miPelicula y la función que va a hacer el "efecto" sobre la imagen se llama modificaMovieClip, deberías hacer lo siguiente:
<code>
function modificaMovieClip(imagen:MovieClip):Void{
//aquí pones el código del efecto que quieres hacer
//En "imagen"tienes la imagen con el alpha 100
}
for (var i in miPelicula) {
var imagen:MovieClip = miPelicula[i];
if (imagen._alpha == 100) {
modificaMovieClip(imagen);
}
}
</code>
He escrito el código directamente aquí, por lo que puede llevar alguna errata
Un saludo
musher5
Hola tpmmds, gracias por tu respuesta. He probado lo que dices y no me funciona. Este es el código que he puesto:
function modificaMovieClip(imagen:MovieClip):Void{
//aquí pones el código del efecto que quieres hacer
scaleTo(150,_root.tiempoTransicion2,_root.animacion2);
alphaTo(0,_root.tiempoTransicion2,_root.animacion2);
//En "imagen"tienes la imagen con el alpha 100
}
for (var i in miPelicula) {
var imagen:MovieClip = miPelicula[i];
if (imagen._alpha == 100) {
modificaMovieClip(imagen);
}
}
No sé que puede fallar. De todas maneras no tendría que que crear un Array o algo para decirle que busque en todas las imágenes. Es decir, en un frame tengo como 6 imágenes (que en realidad son movieclips). Necesitaría que rastreara el _alpha de todas las imágenes y que cuando encontrara el alpha = 100 de una imagen ejecutara la función sobre dicha imagen (MC). Lo seguro es que tan sólo una de las imágenes va a tener valor alpha = 100, por lo que si consigo encontrar esta propiedad seguro que la función se ejecuta bien.
No sé si te lo he explicado bien ;-))
tpmmds
Hola:
No es necesario crear el array, ya que el movieClip que contiene las imágenes es, por así decir, un Array. En la sentencia for, dentro del paréntesis verás que aparece "miPelicula". Sustituyelo por el nombre del movieClip donde estés colocando las imágenes; si directamente las está colocando en el escenario, coloca en el for la palabra "this", (o "_root"), para que dicho for recorra todas las imágenes que tienes en el escenario. Aunque creo que es mejor que las metas en un movieClip, porque si no, el for va a mirar el valor del alpha de TODO lo que tengas en el escenario.
El for es una sentencia que hace un bucle: repite las instrucciones que hay dentro de las llaves para cada uno de los elementos de "miPelicula". Cuando encuentra una imagen que tiene el alpha == 100, llama a la funcion "modificaMovieClip" y le pasa como parámetro la imagen que tiene el alpha==100.
En esta funcion "modificaMovieClip" verás que recibe como parámetro la imagen que tenía el alpha==100. No tienes que buscar nada, ya la tienes ;-) :
<code>
function modificaMovieClip(imagen:MovieClip):Void{
imagen.scaleTo(150,_root.tiempoTransicion2,_root.animacion2);
imagen.alphaTo(0,_root.tiempoTransicion2,_root.animacion2);
}
</code>
Imagino que _root.tiempoTransicion2, _root.animacion2 serán variables de las que optienes el valor del efecto que estás aplicando. Si no es el caso, aplica el efecto a "imagen", ya que como he dicho antes, es el movieClip que tiene alpha==100
Un saludo.
musher5
Funciona!!! ;-)
Muchas gracias por la explicación!!!