Comunidad de diseño web y desarrollo en internet online

Problema con tira de imágenes "deslizante"

Citar            
MensajeEscrito el 22 Jul 2009 01:03 pm
Hola a todos!!
Hacia ya bastante tiempo que no posteaba en el foro, a ver si podeis ayudarme..

He creado un menú vertical cuyo contenido se desplaza dependiendo de la posición del mouse, asta aqui todo bien, mi problema es que dicho menú está situado en el X 0, e Y 60, y por encima tiene una mascara para que cuando suba mas de 60 no se vea. El problema es que el primer botón no se puede pulsar ya que necesitas situar el mouse en Y 0 para que se vea.

No se si queda mu claro, por si acaso posteo el códico:

Código ActionScript :

var contenedor:Sprite;

var finalY:Number = 0;

addEventListener(Event.ENTER_FRAME,onEnterFrame);
contenedor.addEventListener(MouseEvent.CLICK, onClick);



function onEnterFrame(event : Event):void 
{
   if (contenedor.hitTestPoint(mouseX,mouseY)) 
   {
      finalY = (mouseY * (- contenedor.height + stage.stageHeight)) / stage.stageHeight;
   }
   
   contenedor.y += (finalY - contenedor.y) / 8;
}


Saludos y gracias! :wink:

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

firefox
Citar            
MensajeEscrito el 23 Jul 2009 06:43 am
Supongo que la solución será cambiar la fórmula del "finalY". Tal y como lo tienes, finalY va a coger los valores desde 0 a stage.stageHeight-contenedor.height, si lo que quieres es que coga los valores desde 60 a (60+stage.Height-contenedor.height)

Código ActionScript :

finalY = (mouseY * (60 - contenedor.height + stage.stageHeight)) / stage.stageHeight; //<--le he sumado 60

Aunque tendría que coger "papel y lápiz" para hacer los cálculos

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Jul 2009 11:06 am
Gracias Eliseo2, eso ya lo probe y no funciona del todo bien, d este modo el contenedor baja demasiado. Estoy pensando que quizas me funcione haciendolo como un paneo de una imagen...

Voy a probar, si se os ocurre algo mejor estoy abierto a propuestas.

Saludos!

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

firefox
Citar            
MensajeEscrito el 23 Jul 2009 11:41 am
Fusel, es una regla de tres
Cuando mouseY vale "Y0", finalY debe vale "FINAL0"
cuando mouseY vale "Y1", finalY debe vale "FINAL1"
Luego

Código :

finalY=FINAL0+(mouseY-Y0)*(FINAL1-FINAL0)/(Y1-Y0)

Lo que no sé son los valores de Y0, FINAL0, Y1 y FINAL1, por eso te decía lo de coger lápiz y papel.

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Jul 2009 12:01 pm
La verdad es que estoy hecho un lio con las variables... creo que no tengo muy claro a que se refiere cada una.
Si pudieras explicarme te lo agradeceria un monton!!

Un saludo!

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

firefox
Citar            
MensajeEscrito el 24 Jul 2009 06:49 am
Lo trato de explicar más despacio:
La mouseY puede ir desde 0 a stage.stageHeight
El menú vertical puede ir desde 60 a ¿stage.stageHeight-contenedor.height-60? -es lo que no sé, debería dibujarlo en un papel, pero ando bastante vago-
Así que FINAL0=60, FINAL1=(stage.stageHeight-contenedor.height-60) e Y0=0 Y1=stage.stageHeight
con lo que la fórmula quedaría

Código :

finalY=FINAL0+(mouseY-Y0)*(FINAL1-FINAL0)/(Y1-Y0)
//o sea
finalY=60+(mouseY-0)*((stage.stageHeight-contenedor.height-60)-60)/(stage.stageHeight-0)
//simplificando
finalY=60+mouseY*(stage.stageHeight-contenedor.height)/stage.stageHeight

Lo siento, no me sé explicar mejor :(

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Jul 2009 09:54 am
Muchas gracias Eliseo2, voy a ver... :wink:

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.