Subscribe to RSS Feed

Subscribe to Comments Feed

Subscribe to Atom Feed

Soportalo

Otro blog más de WordPress
  • Información

Efecto Acercar (zoom ) en Flash

por admin Etiquetas: Flash, Programacion
21 02 2009

Muchas veces nos es necesario hacer un efecto de zoom a ciertos clips o imágenes, por ejemplo cuando tenemos mapas, entornos que muestran opciones más pequeñas conforme se van acercando a ella, etc. Realizar este efecto es muy útil y ayuda a la usabilidad de nuestra aplicación.

En este caso en específico explicaré sólo el método de acercamiento por medio del click del mouse a un lugar en específico del clip.

Lo que necesitaremos será el clip a trabajar, dentro del cual podremos poner lo que queramos, imágenes, dibujos, etc. Luego le asignamos un nombre de instancia (en este caso mapa) y sólo resta copiar este código en el primer frame de la película principal.

Código :

incremento = 2;
function zoom(x,y,ancho,alto, aceleracion) {
mapa.onEnterFrame = function() {
this._x += (x-this._x)/aceleracion;
this._y += (y-this._y)/aceleracion;
this._width += (ancho-this._width)/aceleracion;
this._height+= (alto-this._height)/aceleracion;
if (Math.abs(x-this._x)<0.5 && Math.abs(y-this._y)<0.5 && Math.abs(ancho-this._width)<0.5 && Math.abs(alto-this._height)<0.5) {
this._x = x;
this._y = y;
this._width = ancho;
this._height = alto;
delete this.onEnterFrame;
}
};
};
onMouseDown =function(){
if (mapa.hitTest(_xmouse,_ymouse)){
Alto = incremento*mapa._height;
Ancho = incremento*mapa._width;
x = _xmouse-((_xmouse-mapa._x) * incremento);
y= _ymouse-((_ymouse-mapa._y) * incremento);
zoom(x,y,Ancho,Alto,3);
}
};

¡Y listo! Ya puede usarse, sólo prueba dando click encima del clip.

Ahora procederé a explicar el código.

Incremento es la variable que determina el tamaño del acercamiento, en este caso lo incrementa en un 200% puede ser modificable a nuestro antojo.

Esta porción de código es parte de este tip con la diferencia que incrementa dos variables más, ancho y alto, las cuales se encargarán de modificar el ancho y el alto del clip, haciendo la misma función que las variables de columna y fila y la misma comprobación, si se ha cumplido, para poder eliminar el enterframe.

Código :

function zoom(x,y,ancho,alto, aceleracion) {

mapa.onEnterFrame = function() {

this._x += (x-this._x)/aceleracion;

this._y += (y-this._y)/aceleracion;

this._width += (ancho-this._width)/aceleracion;

this._height+= (alto-this._height)/aceleracion;

if (Math.abs(x-this._x)<0.5 && Math.abs(y-this._y)<0.5 && Math.abs(ancho-this._width)<0.5 && Math.abs(alto-this._height)<0.5) {

this._x = x;

this._y = y;

this._width = ancho;

this._height = alto;

delete this.onEnterFrame;

}

};

};

La siguiente parte es la importante, lo primero que hará será detectar si el mouse ha sido presionado.

Código :

onMouseDown =function(){

Esto hará la comprobación por medio de la cual verificará si las coordenadas del mouse en el momento que se presionó están sobre el clip, lo cual indicará que se ha echo click sobre él.

Código :

if (mapa.hitTest(_xmouse,_ymouse)){

Después de eso se calculará el tamaño de la película con el zoom:

Código :

Alto = incremento*mapa._height;
Ancho = incremento*mapa._width;

que es donde interviene la variable incremento, la cual, reitero, podremos manejar a nuestro antojo.

Luego haremos el cálculo de la nueva posición del clip, ya que si lo dejamos en esa posición, se nos moverá hacia la derecha y hacia abajo, lo cual nos desubica, para lo cual se emplea la siguiente ecuación:

Código :

x = _xmouse-((_xmouse-mapa._x) * incremento);
y= _ymouse-((_ymouse-mapa._y) * incremento);

Y por último le mandamos a la función los parámetros y ella se encargará del resto.

Código :

zoom(x,y,Ancho,Alto,3);

Nota: es importante que al crear el clip, el punto de registro sea a la izquierda arriba.

Espero les sirva.

Si te sirvio este post y quieres divertirte un poco ahora da click aqui y Visita Soportalo.com Post nuevos todos los dias

11 commentario/s

11 Respuestas to “Efecto Acercar (zoom ) en Flash”

  1. mipedtor dice:
    30 Marzo 2009 en 11:37

    Hola Fento,

    he llegado aqui a través de los foros de Cristalab. Creo que lo que posteas es lo que estoy buscando, pero no consigo hacerlo. ¿Te importaría poner un ejemplo en .fla para poder descargarlo y ver qué es lo que estoy haciendo mal? O puedes enviarmelo por mail si no quieres colgarlo aqui, aunque creo que a más de uno nos vendría bien.

    Un saludo y gracias por todo!

  2. spidxel dice:
    6 Abril 2009 en 10:32

    Yo tambien llegue de Cristallab y me anda ok en AS2. Solo que aun no pude regresar la imagen a tamaño inicial…aunque deberia ser sencillo. Gracias por compartir

  3. Rodrigo-Azul dice:
    11 Abril 2009 en 15:00

    Muchas gracias por compartir tu codigo me hubiera tardado mas tiempo hacerlo!, si se quiere hacer un alejamiento, solo se tiene que dividir entre el incremento, ya que el tamaño esta en fundion del incremento :) . En mi caso puse dos botoncitos uno para acercar y otro para alejar, el boton de alejar tiene la siguiente accion.
    [code]
    on (press) {
    if (_root.pages.hitTest(_xmouse,_ymouse)){
    Alto = _root.pages._height / _root.incremento; //---ZoomOut
    Ancho = _root.pages._width /_root.incremento; //------ZoomOut
    x = _xmouse-((_xmouse-_root.pages._x) * _root.incremento);
    y= _ymouse-((_ymouse-_root.pages._y) * _root.incremento);
    _root.zoomIn(x,y,Ancho,Alto,3);
    }
    };
    [/code]

  4. fgarcia dice:
    27 Mayo 2009 en 2:06

    Me gustaría que me mandaran el fla al correo electrónico..

    muchas gracias por el post.

  5. fgarcia dice:
    27 Mayo 2009 en 2:07

    el correo es fgarcia@aenor.es

  6. m dice:
    15 Junio 2009 en 14:23

    hola
    me gustaría que me explicaran como poner el código si utilizo botones para + y – zoom
    gracias!

  7. lovooo dice:
    9 Julio 2009 en 12:30

    A mi tmbn me gustaria q nos pudieras explicar como funciona el codigo con botones de + y -
    De antemano muchas gracias

  8. ehnri dice:
    21 Agosto 2009 en 21:00

    A mi me gusto el tema de hacerlo directo con el mouse es super practico, Pero plisss no puedo regresarlo jajajaj
    tal vez si le pongo numeros negativos al porcentaje… jajaja
    pero me gustaria alejarme de nuevo con el segundo boton

  9. Javier dice:
    9 Octubre 2009 en 17:51

    Saludos, solo queria saber si podrian ayudarnos a hacer esto con los botones de zoom, uno para alejar o otro para acercar….y si se puede hasta un boton que nos envie a la imagen con tamaño original..jejeje.saludos.

  10. sdadasdsad dice:
    8 Julio 2010 en 9:37

    dfsfsdfsdf

  11. sdadasdsad dice:
    8 Julio 2010 en 9:38

    ola a todos

Dejar una respuesta

Clic para cancelar respuesta.

Credits &Trad: Bingo, c10