Comunidad de diseño web y desarrollo en internet online

VELOCIDAD DE DESPLAZAMIENTO EN UN DRAG AND DROP

Citar            
MensajeEscrito el 13 Oct 2008 05:19 pm
Saludos Flasheros tengo esta duda:

estoy trabajando con un movie al ke le aplike un drag and drop pero no me late la velocidad de desplazamiento cuando se arrastra con el puntero ke le tengo ke agregar al codigo para no se mueva tan rapido. gracias de antemano al ke me pueda ayudar y saludos.

Por zerokreativo

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Oct 2008 06:02 pm
Que quieres decir con lo siguiente:

no me late la velocidad de desplazamiento cuando se arrastra

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 13 Oct 2008 06:13 pm
ke el movimiento del movie es muy rapido cuando lo arrastro con el cursor lo ke necesito es ke se vaya despacio o sea mas lento

Por zerokreativo

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Oct 2008 06:49 pm
Lo que quieres es que el objeto siga al mouse lentamente?

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 13 Oct 2008 07:02 pm
seep ke lo siga lento o con la velocidad ke le de a los valores dentro del codigo acuerdate ke es un drag and drop por lo tanto arrastro con el mouse y no sigue el mouse weno pal caso es lo mismo

Por zerokreativo

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Oct 2008 07:16 pm
Básicamente debes crear una diferencia de distancia en las "_x" y las "_y" y multiplicarlas por un valor menor que uno y esto se lo sumas a la distancia actual del objeto, eso hará que se dirija hasta la distancia deseada con un efecto de easing:

Crea en un documento nuevo un MovieClip con nombre de instancia "bola" pega en el primer frame de tu película el siguiente código y testéalo, si la variable easing se acerca más a 1 el movimiento será más brusco, mientras que si se acerca a 0 será más suave

Código ActionScript :

bola.onPress = function():Void{
   
   var easing:Number = .25;
   
   this.onEnterFrame = function():Void{
      
      var difX:Number = (this._parent._xmouse - this._x) * easing;
      var difY:Number = (this._parent._ymouse - this._y) * easing;
      
      this._x += difX;
      this._y += difY;
      
   }
   
}

bola.onRelease = bola.onReleaseOutside = function():Void{
   
   delete this.onEnterFrame;
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 13 Oct 2008 07:22 pm
esta perfecto solo hay un detalle cuando kito el click sostenido el movie se para en el trayecto y no donde deje de dar el click como se le hace para ke se detenga lentamente y no de golpe.

Por zerokreativo

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Oct 2008 07:31 pm
me disculpo ignaren el ultimo comentarioya kedo resuelto muchas gracias por la ayuda

Por zerokreativo

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Oct 2008 07:53 pm
siempre si sigo necesitando ayuda ya que el codigo ke me hiciste favor de dar hace ke el movie siga el cursor y recuerda ke lo ke yo necesito es drag and drop o sea arrastrar yo mismo el movie con el cursor

Por zerokreativo

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Oct 2008 08:23 pm
Bueno entonces no te entiendo correctamente, drag and drop se le dice a presionar un objeto y soltarlo en el lugar que desees, por lo tanto se moverá a la velocidad que se mueve el cursor, pides que se mueva más lento, bueno si tu mouse se mueve rápido y tu objeto más lento entonces ya deja de ser un drag and drop y se convierte en un objeto que se mueve más lento que el mouse o lo que es lo mismo un objeto que sigue al mouse, solo le había añadido a esto que siguiera al mouse hasta que levantaras el cursor para que sea un "drag and drop más lento".

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 13 Oct 2008 08:26 pm
para que nos kede mas claro lo ke necesito revisa este ejemplo por favor:

http://www.legendstelegraph.com

como se puede ver el periodico no corre a la velocidad del puntero y lo puedes ver si dejas el click sostenido y mueves el mouse.

Por zerokreativo

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Oct 2008 09:06 pm
Es exactamente lo que te había dado (el objeto sigue al mouse), la única diferencia que tiene el que has posteado es que tiene un efecto de rozamiento al soltar el objeto por lo tanto este seguirá moviéndose un espacio de tiempo:

Para este tipo de ejercicios es aconsejable tener un framerate entre 24 y 30 fps

Código ActionScript :

bola.onPress = function():Void  {
   
   this.drag = true;
   
   this.onEnterFrame = moveBall;

};

bola.onRelease = bola.onReleaseOutside = function ():Void {
   
   this.drag = false;
   
};

function moveBall():Void{
   
   var rozamiento:Number = .6;
   var easing:Number = .5;
   
   this.oldX = this.posX;
   this.oldY = this.posY;
   this.posX = this._x;
   this.posY = this._y;
   
   if(this.drag){
      
      this.vX = (this.posX - this.oldX) * 10;
      this.vY = (this.posY - this.oldY) * 10;
      
      this.difX = (this._parent._xmouse - this._x) * easing;
      this.difY = (this._parent._ymouse - this._y) * easing;
      
      this._x += this.difX;
      this._y += this.difY;
      
   }else{
      
      this.posX += this.vX/10;
      this.posY += this.vY/10;
      
      this.vX *= rozamiento;
      this.vY *= rozamiento;
      
      this._x = this.posX;
      this._y = this.posY;
      
      if(Math.round(this.vX * 100) == 0 && Math.round(this.vY * 100) == 0){
         
         delete this.onEnterFrame;
         
      }
      
   }
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 13 Oct 2008 09:29 pm
ok entendido y anotado, en este caso para lograr el efecto de rozamiento utilizando este codigo en el movie

on(press) {
startDrag(this._parent,false, 400, 0, 500, 600);

}
on(release) {
stopDrag();


}


aki ke tendria ke agregar para lograr el efecto de rozamiento

gracias

Por zerokreativo

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Oct 2008 09:33 pm
El código que postee anteriormente y que me llevó un tiempo hacerlo realiza esta tarea por ti, las dos variables que lo controlan son easing y rozamiento, la primera para mientras estás moviendo el objeto y la segunda para cuando lo sueltas.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 13 Oct 2008 09:37 pm
oke te agredesco el esfuerzo pero como es una imagen muy grande necesito ponerle limites en el dezplazamiento para ke no se vea los bordes blancos por eso agregue esto:

startDrag(this._parent,false, 400, 0, 500, 600);

en el codigo ke me pasaste dende debo poner esta condicional.

gracias

Por zerokreativo

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Oct 2008 10:44 am
La condición la debes poner en el momento que se le da posicion al objeto en las "_x" y en las "_y".

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 05 Ene 2010 07:19 pm
Hola, estoy tratando de hacer lo mismo que zerocreativo y el código posteado acá por elchininet funciona perfecto, excepto por un detalle: cuando clickeo el movieclip para arrastrarlo, el punto de anclaje del mismo siempre se alinea con el puntero.

No sé si me explico, el movieclip es una imagen bastante grande, que debe arrastrarse para ver cada parte, es decir, nunca se ve completa, sino que se va viendo a medida que se arrastra, como se hace en esta web: http://www.iamalwayshungry.com/VERS7/index.html], y con este código, no puedo agarrar una esquina y arrastrarlo desde allí, sino que se doy click a una esquina, el movieclip se mueve hacia el centro, donde está el punto de anclaje.

¿Qué debo agregar o modificar en el código para que eso no suceda y el drag and drop se vea como en la web que coloco de referencia?

Gracias de antemano.

Por rq!

14 de clabLevel



 

safari
Citar            
MensajeEscrito el 07 Ene 2010 04:11 pm
@rq!, sólo debes guardar la posición inicial del mouse dentro del objeto y sumársela al valor del mismo en las "_x", aquí te dejo el ejemplo:

Código ActionScript :

bola.onPress = function():Void  { 
    
   this.drag = true;
   
   this.iniX = this._xmouse;
   this.iniY = this._ymouse;
    
   this.onEnterFrame = moveBall; 
 
}; 
 
bola.onRelease = bola.onReleaseOutside = function ():Void { 
    
   this.drag = false; 
    
}; 
 
function moveBall():Void{ 
    
   var rozamiento:Number = .6; 
   var easing:Number = .5; 
    
   this.oldX = this.posX; 
   this.oldY = this.posY; 
   this.posX = this._x; 
   this.posY = this._y; 
    
   if(this.drag){ 
       
      this.vX = (this.posX - this.oldX) * 10; 
      this.vY = (this.posY - this.oldY) * 10; 
       
      this.difX = (this._parent._xmouse - (this._x + this.iniX)) * easing; 
      this.difY = (this._parent._ymouse - (this._y + this.iniY)) * easing; 
       
      this._x += this.difX; 
      this._y += this.difY; 
       
   }else{ 
       
      this.posX += this.vX/10; 
      this.posY += this.vY/10; 
       
      this.vX *= rozamiento; 
      this.vY *= rozamiento; 
       
      this._x = this.posX; 
      this._y = this.posY; 
       
      if(Math.round(this.vX * 100) == 0 && Math.round(this.vY * 100) == 0){ 
          
         delete this.onEnterFrame; 
          
      } 
       
   } 
    
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 07 Ene 2010 08:00 pm
Muchas gracias Elchininet!!! Funciona de maravilla, y más importante: lo entiendo :)

Gracias por tu ayuda.

Por rq!

14 de clabLevel



 

safari

 

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