Comunidad de diseño web y desarrollo en internet online

Mover mc según la posición del cursor (scrolling panel)

Citar            
MensajeEscrito el 14 Sep 2011 02:12 pm
Hola. Estoy intentando hacer que un movie clip se mueva a derecha o izquierda según movamos el cursor a derecha o izquierda de la pantalla. El clip es un mc muy largo que está lleno de thumbs y cuando llege al final de ambos lados tiene que pararse. Esto lo he conseguido, pero a medida que va llegando a los lados va cada vez más y más lento y lo que necesito es que vaya a una velocidad constante.

Este es el código:

Código ActionScript :

var x_down:Number = 2900;
var end:Number = -((x_down)/.8 + 50);

var key:Number;
var c_key:Number;


var start1:Tween = new Tween( padre_mc, "x",  Regular.easeInOut, padre_mc.x, (padre_mc.x + 280) , 1, true);


padre_mc.addEventListener(MouseEvent.CLICK, alfa);
function right_left(e:Event):void
{
   key = (mouseX*(end/500) + 500)-padre_mc.x;
   c_key = key / 3000;
   i = 15;
}
function move_g(event:Event):void
{
   if (i > 1)
   {
      padre_mc.x = padre_mc.x + c_key * i;
      if (i == 1)
      {
         i = 15;
      }
      else
      {
         i = i - 1;
      }
   }
}

function limites(e:Event):void
{
   if (padre_mc.x + padre_mc.width < stage.stageWidth - 1950)
   {
      padre_mc.x = stage.stageWidth -(padre_mc.width+1950);
   }
}

function activar(e:Event):void
{
   padre_mc.addEventListener(Event.ENTER_FRAME, right_left);
   padre_mc.addEventListener(Event.ENTER_FRAME, move_g);
   padre_mc.addEventListener(Event.ENTER_FRAME, limites);
}

this.addEventListener(Event.ADDED, activar);

function desactivar(e:Event):void
{
   padre_mc.removeEventListener(Event.ENTER_FRAME, right_left);
   padre_mc.removeEventListener(Event.ENTER_FRAME, move_g);
   padre_mc.removeEventListener(Event.ENTER_FRAME, limites);
}

this.addEventListener(Event.REMOVED, desactivar);

function activarmove(e:MouseEvent):void
{
   padre_mc.addEventListener(Event.ENTER_FRAME, right_left);
   padre_mc.addEventListener(Event.ENTER_FRAME, move_g);
   padre_mc.addEventListener(Event.ENTER_FRAME, limites);
}

padre_mc.addEventListener(MouseEvent.MOUSE_OVER, activarmove);

function desactivarmove(e:MouseEvent):void
{
   padre_mc.removeEventListener(Event.ENTER_FRAME, right_left);
}

padre_mc.addEventListener(MouseEvent.MOUSE_OUT, desactivarmove);



¿como puedo conseguir que vaya a una velocidad constante?

Gracias!

Por plug78

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Sep 2011 09:04 pm
Tienes que revisar tu algoritmo para sacar elementos variables, por ejemplo aqui

key = (mouseX*(end/500) + 500)-padre_mc.x;

Usas mouseX y padre_mc.x que posiblemente varían mientras se mueven. deberías tomar una constante en función de si el mouse está ala derecha o izquierda del centro, y lo de padre_mc.x revisarlo a ver si es necesario. Si lograste armar el algoritmo (que tiene mucho número mágico) deberías poder repensarlo según estos detalles

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Sep 2011 08:10 am
Si, le he quitado la parte de -padre_mc.x; y funciona como yo quiero, pero solo hacia un lado. Cuando cambias la posición del ratón hacia el otro se mueve muy lento. :?

Por plug78

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Sep 2011 10:10 am
Luego estás usando i en un rango de 1 a 15 para variar la velocidad,olvídate de i

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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