Cristalab

Ejemplo de Zoom con lupa en Flash CS3

Por: Zguillez + 25.09.2007

Este es un ejemplo de lupa sobre un mapa realizado en Flash CS3 y actionscript 3. Hacer este efecto es muy sencillo, únicamente hemos de tener dos imágenes, una pequeña y otra más grande que ocultaremos dentro de una máscara. Esta máscara la moveremos para crear el efecto de lupa.


Desplaza el mouse sobre la imagen para mover la lupa


Colocaremos la imagen pequeña dentro de un MovieClip que se llame "mapaSmall" y la imagen grande dentro de otro que se llame "mapaBig".

La máscara que ocultará el mapa grande será otro MovieClip con el nombre "mascara", y la lupa la llamaremos "lupa" y será un clip de igual tamaño que el contorno de la máscara.



Una vez montados los clips empecemos con el código:

Primero de todo crearemos una serie de variables

Código :

var porcentajeX:uint = 100 / (mapaBig.width / (mapaSmall.width - lupa.width / 2));
var porcentajeY:uint = 100 / (mapaBig.height / (mapaSmall.height - lupa.height / 2));
var distX:uint = 0;
var distY:uint = 0;

Las variables porcentajeX/Y definen que tanto por ciento está ampliada la imagen grande en relación a la pequeña.

Las variables distX/Y nos indican la distancia de corrección para que la zona de la imagen grande situada bajo el mouse coincida con la zona de la imagen pequeña. Por defecto colocaremos estos valores a 0.

Ahora crearemos una función que se ejecute cada vez que movamos el mouse.

Código :

this.addEventListener(MouseEvent.MOUSE_MOVE, lupaMouseMove);
//-----------------------------------------------
function lupaMouseMove(event:MouseEvent):void
{
      calculaDist();
      mueveLupa();
      //
      lupa.x = mouseX - lupa.width / 2;
      lupa.y = mouseY - lupa.height / 2;
      //
      if (lupa.x < mapaSmall.x) {
         lupa.x = mapaSmall.x;
      } else if (lupa.x > mapaSmall.x + mapaSmall.width - lupa.width) {
         lupa.x = mapaSmall.x + mapaSmall.width - lupa.width;
      }
      if (lupa.y < mapaSmall.y) {
         lupa.y = mapaSmall.y;
      } else if (lupa.y > mapaSmall.y + mapaSmall.height - lupa.height) {
         lupa.y = mapaSmall.y + mapaSmall.height - lupa.height;
      }
      //
      mascara.x = lupa.x
      mascara.y = lupa.y
}

En esta función moveremos el MovieClip "lupa" en relación a la posición del mouse, controlaremos que el clip no salga de la pantalla, y haremos que la posición de la máscara sea la misma que la lupa.

En esta función también haremos una llamada a dos funciones. Una que actualizaran las variables distX/Y que variaran según la posición de la lupa y del porcentaje de ampliación de las imágenes, y otra que hará que la imagen grande se mueva según estas variables.

Código :

function calculaDist():void
{
   distX = (lupa.x - mapaSmall.x) / porcentajeX * 100;
   distY = (lupa.y - mapaSmall.y) / porcentajeY * 100;
}
function mueveLupa():void
{
   mapaBig.x = mascara.x - distX;
   mapaBig.y = mascara.y - distY;
}

Y liso! miau

Descargar el archivo .fla

Etiquetas actionscript_3 flash

Comentarios | Enviar un comentario
De la refurifunflay -[otra vez Riendo], te pasaste lco grax
Por: enjoydasilence_blog
Easy. Sonrisa
Por: Carloz.Yanez
Excelente Zguilez!!!
Parece que estuvieses pasando mis proyectos de AS2 a AS3 sin necesidad de pedírtelo!.
*Abre el antivirus y busca spyware que pueda incriminar a Zguillez... mmmm
Por: The Fricky!
Te quedó muy cool Zguillez miau.

La lupa fue lo primero que aprendí a hacer cuando llegué a clab, gracias a un ejemplo de L$. Cómo pasa el tiempo U_U
Por: XKlibur
Genial!!!!

...lo bien que me hubiera venido esto hace un par de meses!!!!

Cada dia aprendiendo más!
Por: pabletein_blog
Se ve muy bien Zguillez !!!... muy bueno...
Cool
Por: M@U
Muy buen Tip, y fácil de usar Muy Feliz
Por: flashreloco
excelente aporte, gracias
Por: d-virus_blog
miau muy bueno eh miau
Por: eldervaz
Excelente Thumbs up Típico efecto.
Ahora todos los tutoriales que antes ya eran repetidos, ahora se vuelven a ver necesitar.
Por: JaLeRu
Articulo interesante. Esperamos otros más
Por: tutor_blog
No tienen el mismo ejemplo en la version 8???
Por: alex_blog
Excelente articulo
Por: Ruby_blog
Ok
Por: Cesar_blog
gracias por el analisis esta buenazo
Por: karina_blog

alex_blog :

No tienen el mismo ejemplo en la version 8???


Existen millones de este ejemplo para As2
Por: JaLeRu
Zguilez, mis respetos son para vos :O
aplausooooooos¡¡¡¡¡
Por: Señor Oz_blog
que es lupoa
Por: gg_blog
muchas gracias lo usaré

trumoc
Por: trumoc
es bueno este truco con flash
Por: alejo17.77@hot_blog
Felicitaciones, muy bueno y fácil de entender.
Gracias por el aporte.
Salu2.
Por: Taytus_blog
Muy Bueno !!!!!!
Por: cecy_blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.