Foros del Web » Creando para Internet » Flash y Actionscript »

actualizar coordenadas

Estas en el tema de actualizar coordenadas en el foro de Flash y Actionscript en Foros del Web. Hola a todos, este es mi primer post y empiezo con una pregunta: Estoy haciendo una web y me han pedido que el menu aparezca ...
  #1 (permalink)  
Antiguo 12/11/2007, 10:41
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
actualizar coordenadas

Hola a todos, este es mi primer post y empiezo con una pregunta:

Estoy haciendo una web y me han pedido que el menu aparezca en la parte superior cuando pases con el ratón. He usado la propiedad _ymouse indicandole que cuando sea menor que 110 haga la animación para que aparezca el menú. Para que se actualice la variable de la coordenada he usado onEnterFrame.

El problema es que falla bastante, a lo mejor lo hace 3 veces seguidas y falla a la cuarta, y así sucesivamente. Hay alguna otra manera para actualizar la coordenada aparte de onEnterFrame?

Gracias de antemano y un saludo a todos.
  #2 (permalink)  
Antiguo 12/11/2007, 14:03
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 19 años, 3 meses
Puntos: 23
Re: actualizar coordenadas

Hola d-foc!

Mejor utiliza on(rollOver). Selecciona tu mc(movie clip) donde esta la animacion del menu y pon este codigo:

on(rollOver){
this.paly();
}

on(rollOut){
this.paly();
}


Asi, cuando el raton pase por el menu iniciara la animacion para que aparesca y cuando quites el raton desaparesca.
  #3 (permalink)  
Antiguo 12/11/2007, 18:56
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 21 años, 4 meses
Puntos: 406
Re: actualizar coordenadas

Hola d-foc:
Bienvenido al Foro.
Vamos con un ejemplo:
Supongamos que tenemos el menú dentro de un MC, al ponerlo en el escenario le colocamos como nombre de instancia: mc_menu.
Creamos una capa para las acciones y en el primer frame éste código:
mc_menu._visible = false
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function() {
if (_ymouse<=110) {
mc_menu._visible = true;
}else{
mc_menu._visible = false;
}
};
Mouse.addListener(mouseListener);

Espero haberte sido de ayuda.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #4 (permalink)  
Antiguo 13/11/2007, 02:59
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: actualizar coordenadas

Gracias por las respuestas.

Turdo.

Esa solución ya la pensé, pero no me gusta que aparezca el simbolito de la mano al pasar por encima, y al crear un evento de boton siempre aparece, gracias de todos modos.

Bandit.

Eso no lo he probado, pero una preguntilla de un ignorante...al ponerse en true iniciará la animación del mc? o simplemente aparecerá? Esque el mc lo tengo parado con un stop en el primer frame. Lo que he hecho es que cuando _ymouse<110 _root.menu.gotoAndPlay(2). No se si me entiendes, tendria que quitarle el stop no?

Gracias de antemano y un saludo a todos.
  #5 (permalink)  
Antiguo 13/11/2007, 09:01
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 21 años, 4 meses
Puntos: 406
Re: actualizar coordenadas

Al poner la primera línea del código, lo que se está haciendo es ponerlo invisible el menú.
El true hace que sea visible el menú, para activar la animación adiciona: mc_menu.gotoAndPlay(2);

Espero haberte sido de ayuda
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #6 (permalink)  
Antiguo 13/11/2007, 12:51
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: actualizar coordenadas

Hola Bandit, si que funciona de la manera que me has dicho, lo único que ahora me surge otro problema:

Como el menú tiene una animación para aparecer, si mueves el ratón estándo en una coordenada inferior a 110 salta una y otra vez la animación, es decir, lo actualiza demasiado, ya que no te deja moverte por el menú, en cuanto mueves un poco el ratón vuelve a cargarse el menú.

Como puedo hacer?

Muchas gracias de verdad por tu ayuda.

Un saludo.
  #7 (permalink)  
Antiguo 13/11/2007, 13:12
Avatar de Bandit
Moderador
 
Fecha de Ingreso: julio-2003
Ubicación: Lima - Perú
Mensajes: 16.726
Antigüedad: 21 años, 4 meses
Puntos: 406
Re: actualizar coordenadas

Eso es porque el _ymouse se activa en la coordenada <=110, si sales de esa coordenada se ocultará el menú, pero si te mantienes dentro de ella, puedes activar los botones del menú.
Tendrías que quitar el else pero siempre se quedará visible el menú.

Espero haberte sido de ayuda.
__________________
Bandit.
Si no sabes estudia y si sabes enseña.
http://www.banditwebdesign.com/
  #8 (permalink)  
Antiguo 13/11/2007, 13:24
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: actualizar coordenadas

si, quitando el else se queda siempre el menu.

La cuestión es si hay alguna manera de que si esty por debajo de la coordenada 110 deje de actuar el onMouseMove para que no me este cargando constantemente el menu en cuanto mueva el ratón por debajo de 110.

Me trae de cabeza este tema la verdad.

Gracias y un saludo.
  #9 (permalink)  
Antiguo 13/11/2007, 17:19
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: actualizar coordenadas

La cosa está básicamente en coordinar el código del onMouseMove con tu animáción usando además al verificar la posición ymouse la propiedad _currentFrame, para que no lo haga salvo en los fotogramas dónde el clip está plegado o desplegado.

Te paso un ejemplo antes de la explicación:.

Ejemplo
Archivos

Lo que he hecho ha sido crear un clip de pelicula con dos capas...

Capa 1:
En una capa he creado una interpolación de movimiento sobre el clip mcMenu que parte de la posición inicial en altura del clip de pelicula y llega a la altura dónde se ve el menu y luego sigue la interpolación volviendo a la posición inicial dónde no es visible(en mi ejemplo si es visible al inicio en la zona de la flechita en el huequecito que dejo)

Los fotogramas clave de esa interpolación son el 1 y el 12, pués en el fotograma 1 inicia la animación y en el 12 se para arriba.

Coloco pues en el fotograma 1 y en el 12 un hermoso stop();

De esta forma ya tenemos la animación para que:
si en 1 hacemos play() vaya hacia arriba.
si en 12 hacemos play() vaya hacia abajo

En esta capa tambien he puesto alguna cosa más pero pura estética:
fotograma 13 es clave y lo uso para configurar la aceleración inicial de la interpolación(ya que en doce era de -100 y quiero que al volver abajo parte de 100

En los fotogramas 12 y 24 cambio la rotación de uan flecha dentro del clip de película de la animación para que apunte hacia abajo cuando esta desplegado y hacia arriba cuando esta plegado.

Capa 2:
Colocamos el siguiente código que ha de abarcar los 24(en mi caso) fotogramas de la animación:
Código PHP:
var mouseListener:Object = new Object();
mouseListener.onMouseMove = function() 
{
    if (
_ymouse<=110 && _currentframe==1
    {
        
play();
    }
    if (
_ymouse>=110 && _currentframe==12
    {
        
play();
    }
};
Mouse.addListener(mouseListener); 
Estamos diciendo más o menos,

si estamos en el fotograma 1(es decir que el menu no está desplegado) y la posición es menor que 110 haz play.

si estamos en el fotograma 12(es decir que el menu está desplegado) y la posición es mayor que 110 haz play.

Por otra parte además conviene que la pelicula ocupe el 100% en ancho y alto de la ventana del navegador porque fuera de la pelicula flash no tiene acceso al evento de onMouseMove

Y ya está, funciona!!!

Salu2 ;)
__________________
[+]
[+]
  #10 (permalink)  
Antiguo 14/11/2007, 13:00
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: actualizar coordenadas

Muchas gracias por tu aportación. Si que funciona, aunque tengo que retocar bastantes cosas.

Gracias a todos por vuestra ayuda.

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:48.