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.
¡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:
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.
Me gustaría poder manipular un video movie clip en flash usando actionscript, lo que pretendo es poder detener o pausar un video y tambien ejecutarlo (play) pero a diferentes velocidades. Me podrían ayudar con esto?..... Por:pollita
ia que estas lo podrias hacer igual para alejar;) Por:ferranpujol_blog
Hubiese sido bueno si mostrabas un ejemplo de como se vé,,,, Por:jdgomezb_blog
Pues yo lo probe y de plano no me hizo nada espero que puedas colgar un ejemplo aunque sea wl swf saludos Por:joshuavw_blog
como sacarle la pista de cancion a un video para regrabarla????, lo necesito ¡urgentemente! Por:The Big Boss_blog
Como puedo sacarle la pista a un video usando el ACID-PRO?? Por:The Big Boss_blog
quisiera saber como hacer un bote de pintura en flash para que el usuario pinte sus imagenes a su gusto...si pueden colaborarme gracias mi correo es bimacla@hotmail.com Por:bibiana_blog
amigos, supongo que si lo quieren alejar, tienen dos opciones, si desean que el zoom pueda acercarse mas de una vez, pues entonces pueden poner dos botones adicionales, uno para aumentar, y otro para reducir tamaño, estos dos botones, pueden hacer que activen un valor booleano, es decir, de valor "true" o "false" (para los mas despistados, despues, segun el valor que le hayan dado para que active cada boton, en la funcion de onMouseDown, hacer dos condicionales, algo asi como: if zoomActivado = true; //aqui ponen el codigo original de FeNtO para aumentar, que es algo como esto. 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);
despues ponen un else, decir, que si la variable zoomActivado, o como sea que le hayan puesto para determinar el valor booleano, es igual a "false, ponen lo mismo, pero en lugar de aumentar, reducir, es decir el alto seria igual al ancho o alto del clip entre el incremento, es decir, lo contrario, es todo.
La otra opcion seria si quieren que el zoom nada mas se pueda permitir una vez, y que dando un segundo clip, automaticamente se aleje, lo unico que tienen que agregar al codigo original de FeNtO es una variable con valor booleano, y cada que se haga click, es decir, en la funcion onMouseDown, cambiar el valor de true a false o viceversa, y agregarle que se hace en cada caso, es decir, multiplicar ancho, alto, "x" y "y" por el incremento, o en caso contrario, para alejarlo dividirlo entre dos, checare a ver si funciona y despues se los confirmo, es solo una idea, obvio, lo demas les toca a ustedes, jejeje Por:Señor Oz_blog
FeNtO, o cualquier otro mas, Si tienen una mejor solucion para alejar el clip, se agradeceria que lo pusieran, claro, si tienen tiempo. Por:Señor Oz_blog
que tal gente, alguien pudo hacer que se aleje?, me intereso la parte que dice que solo un clic aumente, y al segundo clic aleje, estoy atorado en eso, pudieran ayudarme?????, espero asi sea, saludos! Por:korner_blog
Hola fellas, necesito que me ayuden con el zoom out, tengo casi cero conocimiento de codigo, no se como hice funcionar el zoom in (milagro), espero me puedan tender la mano en esto Por:AlexxanderDeLarge_blog
Hola saben a mi me funciono para acercar pero si me gustaria poner un boton para seguir acercando y poder alejar. al progamador le guystaria poner u ejemplo de eso si lo haces tienes un puesto en el cielo de segurito man. por que vi lo que pusistes arriba pero no me sale bien asi que si lo haces con un ejemplo seria mas facilde entender gracias. Por:Pedro_blog