Cristalab

Cómo hacer un botón con animación de rollOver y rollOut

Por: zcar.net + 07.07.2007

Con este tip quiero mostrarles una manera de hacer un botón con dos animaciones distintas una al situarse el puntero del mouse sobre el botón y otra muy distinta al quitar el puntero.



Esto es muy distinto a hacer un botón con su rollOver y rollOut con una sola animación en retroceso

Primero abrimos un nuevo documento de flash, nos vamos al panel insertar y creamos un nuevo MovieClip le ponemos el nombre que queramos no interesa luego comenzamos creando la apariencia de nuestro botón (como en el ejemplo arriba cree algo sencillo) hacemos un cuadrado y le damos el color que queramos de la medida que mas prefieran yo le di 98x93 img1



A continuación creamos dos capas por encima de la que ya teníamos y le colocamos texto1 y texto2, en esas dos capas vamos a incluir los textos correspondientes, a uno de ellos le damos un tamaño mas grande que el otro para luego animarlos y situarlos en la posición como muestra la imagen para darle el efecto como ya lo vimos en el ejemplo arriba



Ahora vamos con la animación. Cogemos el fotograma en el que se encuentra el texto de mayor tamaño y le damos clic derecho, luego crear la interpolación de movimiento.

Nos situamos en el fotograma 10 de la linea de tiempo y le damos clic derecho e insertamos un fotograma clave y a las demás capas hacemos lo mismo pero ya no insertaremos un fotograma clave, solo ponemos fotogramas comunes o normales para poder visualizar todo y volvemos al fotograma clave que creamos y nos situamos en el

Seleccionamos el objeto y estando en el primer fotograma le aplicamos un alfa de 0% volvemos al fotograma 10 y lo arrastramos hacia abajo en la misma posición del texto pequeño, como verán hay uno enésima de otro pues para solucionar esto nos vamos a la linea de tiempo y seleccionamos la capa que contiene el texto pequeño y clicamos en el fotograma 10 e insertamos un fotograma clave y seleccionamos el texto y lo borramos.

Con esto lograremos que mientras la animación del texto grande se realice al llegar al fotograma 10 el texto pequeño desaparecerá y ya no quedara encima de el. Esto es el rollOver del botón





A continuación nos vamos a la interpolación de movimiento que creamos y nos situamos en el fotograma 20de la linea de tiempo e insertamos un fotograma clave y en las demás capas fotogramas normales ahora para terminar con el efecto del botón hacemos la animación que sera la de salida, la animación de rollOut.

Cogemos el fotograma 20 y seleccionamos el texto, el cual vamos a reducir de tamaño a las dimensiones del texto pequeño para esto tomamos las medidas y las ponemos en el texto grande y lo reduciremos, esto hace que la siguiente animación sea de reducción del texto como se ve en el ejemplo arriba.



Así nos ira quedando nuestra animación...

Con esto tenemos casi terminado nuestro botón lo que sigue es hacer que funcione la animación al contacto con el puntero del mouse para esto vamos a crear tres capas mas encima; nos situamos en una de ellas y crearemos un botón invisible que tenga las medidas de la animación.

¿Como logramos hacerlo? bien creamos un cuadrado y lo situamos encima de toda la animación y presionamos F8 y lo convertimos en botón, nos metemos dentro de su linea de tiempo y para lograr hacer el botón invisible solo arrastramos el primer fotograma hasta la zona activa y ya esta listo.

Regresamos al símbolo, cogemos la siguiente capa y crearemos un fotograma clave en el fotograma 10 lo tenemos seleccionado y le damos el nombre de etiqueta "k2", lo mismo vamos hacer en el primer fotograma de la misma capa y le llamaremos como nombre de etiqueta "k1".





En la figura ya le se ve que en la capa que quedaba cree un fotograma clave en el fotograma 10 esto es para poner un código AS el cual sera un Stop(); esto lo hacemos seleccionando el fotograma 10 y abrimos el panel de acciones y dentro colocamos el código. Lo mismo hacemos en el fotograma 1 de la misma capa. esto hace que la película no reproduzca y se quede en el primer fotograma.

Bueno, después de todo esto culminaremos con la programación del botón transparente para que se lleve acabo la animación rollOver y rollOut . bien comenzamos!! primero seleccionamos el botón trasparente y abrimos el panel de acciones dentro de el ingresamos el siguiente código ActionScrip:

Código :

on(rollOver){
   this.gotoAndPlay("k1")
}
on(rollOut){
   this.gotoAndPlay("k2")
}
on(release){
   //aqui pones la orden que le vas a dar al boton
}


Con esto le decimos a flash, que cuando el puntero del mouse pose sobre el botón vaya y reproduzca la etiqueta "k1" esto seria el rollOver y si el puntero del mouse se desplaza fuera del botón que vaya y reproduzca la etiqueta "k2" esto seria el rollOut (lo de las etiquetas varia según el nombre que le asignes no es necesario que utilices "k1" y "k2" pueden ser los nombre que gustes colocar pero también tendrías que reemplazar el nombre en el código) con esto estamos culminando el botón.

Ahora solo nos queda probarlo pues bien lo tenemos en la biblioteca y lo arrastramos al escenario. porque hacemos esto? pues porque como habíamos creado un MovieClip no estaba en el escenario sino en la biblioteca y por esta razón tenemos que arrastrarlo al escenario principal ahora presionemos control + intro y listo...

Podéis descargaros el archivo del ejemplo aquí.

Etiquetas flash

Comentarios | Enviar un comentario
Es un tip basico explicado de marema explicativa
Por: Victor-Nael
muy bien tio me parese perfecto estube buscando esto dias Riendo
Por: faraon-system_blog
Basico pero util.
Gracias
Por: Kinduff_blog
Tal como lo tienes planteado obtienes el mismo resultado con un clip de botón que tenga un clip con la animación de entrada en el estado "over" y otro clip con la animación de salida en el estado "out".
saludos
Por: Zguillez
No está de más.. muy ameno el tip.
Por: bicho_O
Básico pero útil como menciona Kinduff, aunque yo lo uso más de estas formas, ya que uso otros elementos que tambien tengo que animar:

Código :

on (rollOver) {
   with (mc1)
      gotoAndPlay("tiempo1");
}
on (rollOut) {
   with (mc1)
      gotoAndPlay("tiempo2");
}


// "with" tambien puede contener la ruta (_root.mc0.mc1)

ó

si quieres mover otro elemento fuera de este mismo boton

Código :

on (rollOver) {
   _root.otromc.gotoAndPlay("posicion1");
}


Hya muchas maneras de experimentar Sonrisa
Por: Mr. Konfleis_blog
muchas gracias por sus comentarios, se que es un tip muy basico pero nunca esta demas. Se que se puede hacer de varias formas bueno yo probe con esta, como dice Mr. Konfleis_blog hay muchas maderas de experimentar Muy Feliz esto es mas para los que recien se inicia en flash; creo que esta muy explicado y eso es lo que busco que quede claro todo otra ves muchas gracias por sus comentarios Muy Feliz
Por: zcar.net
hacen falta estos tips basicos pues aquellos que estan recien empezando se lian con estas cosas, a pesar de ello yo en lo personal no enseñaría a programar dentro del mismo mc pues asi el codigo queda enfermantemente desordenado (trabaje con un diseñador que tenia esa costumbre y aun tengo pesadillas) ademas no necesitas un boton y un mc solo con el mc es suficiente (ademas es mas fácil manipular un solo objeto que 2)
digamos que al mc lo nombramos miBoton, creamos una nueva capa en el mismo fotograma a la cual llamamos as (o como se te de la gana) entonces:

Código :


miBoton.onRollOver(){
   this.gotoAndPlay("k1")
}
miBoton.onRollOut(){
   this.gotoAndPlay("k2")
}
miBoton.onRelease(){
   //aqui pones la orden que le vas a dar al boton
}


asi el codigo que hagas sera mucho mas facil de leer y revisar

buen trabajo zcar miau
Por: Inyaka
Lamentablemente, usar RollOver y RollOut puede ocasionar que no funcione bien. Por ejemplo, si alguien hace un ReleaseOutside no se reproduce la animación de salida y el botón queda "presionado".

Con un hitTest se soluciona (también se pueden poner todos los eventos posibles, pero no debería ser necesario)
Por: HernanRivas
disculpen una corrección (si algún bhof lo edita hagame el favor de eliminar este mensaje)
no le asigne el evento a una funcion Lengua

Código :


miBoton.onRollOver= function(){
   this.gotoAndPlay("k1")
}
miBoton.onRollOut= function(){
   this.gotoAndPlay("k2")
}
miBoton.onRelease= function(){
   //aqui pones la orden que le vas a dar al boton
}

Por: Inyaka

HernanRivas :

Lamentablemente, usar RollOver y RollOut puede ocasionar que no funcione bien. Por ejemplo, si alguien hace un ReleaseOutside no se reproduce la animación de salida y el botón queda "presionado".

Con un hitTest se soluciona (también se pueden poner todos los eventos posibles, pero no debería ser necesario)


cierto cierto, se soluciona tambien poniendo una igualdad:

Código :

btn.onRollOut = onReleaseOutside = function (){
   //acciones
}


pero siempre es mejor hitTest
Por: penHolder
Muy buen tutorial Cool
Por: Dureitor
Creo que al menos todos entendemos el funcionamiento de estos Scripts

Solo queda a decisión de cada quién utilizar la forma que mas le plazca ó que esté acostumbrado.

Mientras funcione no hay problema.... Cool

(aunque si es importante tener un código limpio, efectivo y de fácil lectura) Guiño miau
Por: DJ Konflëis
me gusto mucho aclarar un par de dudas en este efecto.Pero hay una duda pendiente, y es que no logro darle direccion al boton dentro de toda una pelicula, al probarla no se direcciona, pero si lo hace al darle un get url.
¿como puedo trabajar con este efecto solo cambiando de escenas y formando una web en un solo archivo?
Por: G.Hantscheruk_blog
hola ta muy bueno pero el que no tiene el programa q
Por: fvvz_blog
muy buen tip, pero como dice: "G.Hantscheruk_blog", no unciona al momento de vincular escenas.
Por: Dabo_blog
solo una pregunta, ¿cómo puedo vincular escenas con este tipo de botón? ya que lo intente con la función " on(release) y no pasa nada.
Por: isra_blog
como hago para detener y continuar con rollover y rollout? un clip de pelicula?
Por: henry_blog

Código :


stop();
gotoAndPlay();


mmmm revisa los malditos ejemplos y tutoriales
Por: Inyaka
Como decía aquí, por alguna extraña razon, desde la versión 8 (no recuerdo si con la 7 también) Flash ignora las escenas a la hora de compilar el swf (no recuerdo bien, pero creo que el tema de las escenas quedó sólo para las presentaciones de diapositivas) uniendo todas las escenas en una sola línea de tiempo y haciendo que
gotoAndPlay/Stop("Escena", fotograma) no funcione.
La forma más sencilla de solucionarlo es colocándole un nombre al fotograma en cuestión y utilizar gotoAndPlay/Stop("nombre_del_fotograma");
Por: The Fricky!
q codigo ocupo si quiero que al presionar salte a otra escena
Por: buuren_blog
¿acaso paso de moda leer antes de postear?
¿los dos últimos mensajes no te dicen nada?
Por: Inyaka
Hola con tod@s, espero alguien me pueda ayudar aca, quiero saber como puedo detener el movimiento de una imagen de izquierda a derecha y en ese momento me funcione el rollover y rollout...
Gracias
Por: Kryztopher_blog
Gracias por la aportación, el efecto es muy guapo
Por: fercopy
oye carnal como puedo hacer un intro me puedrias explicar por fa
Por: Mario_blog
Buenas, espeemos que este foro funcione...

segui prudentemente los pasos del boton con roll.....out...

ahora bien, cuando le asigno la accion al boton de ir a "X" lugar no lo hace

y si intento a todo el boton hacerlo boton nuevamente (bien villero)

aun asi tampoco lo hace...

los nombres de las instancias estan perfectamente colocados,
cree un boton aparte para ver si funcionaba y lo hace..pero este boton que yo quiero usar que es el animado con el roll....out...
no quiere funcionar,

algun consejo señores?

me encantaria poder aprender mas , pero soy animador en after effects, me esta poniendo de la nuca esta mierda del flash!

muchas gracias!!!
Por: federico_blog
Disculpa ahora escribo mi comentario en minuscula para que se entienda mejor. "Logre hacer todos menos asignarle la orden, quiero que el botón me envié a un frem especifico del stage, pero al asignárselo pareciera que le asigna a unos de los frems dentro del movie clip, ¿que puedo hacer?"
Por: alexdrummer_blog
gracias me ha servido en los mios
y lo he utilizado asi:

on (rollOver) {
this.gotoAndStop("over");
_root.textos_mc.gotoAndPlay("prod");
}

on (rollOut, releaseOutside){;
this.gotoAndStop("in");
_root.textos_mc.gotoAndStop(1);
}


trumoc
Por: trumoc_blog
Hola, a ver si alguien me puede ayuar, he creado un menu con botones animados, pero cuando paso el boton demasiado rápido, el boton se me queda en la 2ª posición y ya no cambia.

Aquí esta la muestra.

http://img409.imageshack.us/my.php?image=menuzf4.swf

A ver si alguien me dice que estoy haciendo mal. Gracias
Por: peri2k
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.