2011-08-03 18 views
8

Espero que estés bien hoy, estoy tratando de calcular la distancia de deslizamiento (un gesto táctil) en un sitio web móvil, ¿cómo calcularía cuántos píxeles ha recorrido el usuario en la pantalla? ?Calcular la distancia de deslizamiento en jQuery-mobile

$('.cmButtons').live('swipeleft',function(){ 
    console.log("swiped left"); 
}); 
+1

Solo sé cómo hacer esto sin usar jQuery, así que esta no es una respuesta, pero tal vez una pista. Las coordenadas x, y de inicio del deslizamiento se establecen en el evento touchStart. Allí, también, asigna los puntos de inicio a endPos, la posición final predeterminada. En el oyente touchMove, sigue notando las coordenadas actuales, convirtiéndolas en las coordenadas endPos. En touchEnd notará la diferencia entre startPos y endPos. Por lo tanto, jQuery expone las coordenadas startPos y endPos en su evento swipeLeft, o tiene que conectar su propio complemento para lograr esto fuera de jQuery. – Tim

+0

¿podría agregar un código de muestra, por favor Tim? y entiendo que podría ser un poco diferente, pero me gustaría utilizar su código como base para comenzar :) – Xavier

+1

Relacionados: http://stackoverflow.com/questions/3183872/does-jquery-preserve-touch-events-properties y http: // stackoverflow.com/questions/4755505/how-to-recogized-touch-event-using-jquery-for-ipad-safari-browser-is-it-possible –

Respuesta

2

No estoy seguro si esto ayuda, pero con Beta 2 se han publicado algunas funciones adicionales golpe

umbrales de eventos golpe configurables añaden

Hay eran un número de constantes codificadas en el código de deslizamiento de jquery.mobile.event.js . Para los desarrolladores que necesitan ajustar esas constantes para permitir un mayor desplazamiento vertical y todavía registrar un deslizamiento, esta nueva función les permite ajustarse. Gracias a mlitwin por contribuir con esto.

  • scrollSupressionThreshold (por defecto: 10px) - Más de este desplazamiento horizontal , y vamos a suprimir el desplazamiento
  • durationThreshold (por defecto: 1000 ms) - Más tiempo que esto, y no es un golpe
  • horizontalDistanceThreshold (valor predeterminado: 30px): deslice horizontalmente el desplazamiento debe ser mayor que esto.
  • verticalDistanceThreshold (valor predeterminado: 75px) - El desplazamiento vertical del deslizamiento debe ser menor que esto.
+0

Al final tuve que escribir un oyente personalizado en jQuery Mobile que se activaría al comenzar a tocar y deslizar y tocar - deslizar eventos. Gracias por su presentación. Me ayudó a comenzar en el lugar correcto. – Xavier

+0

np. ¿podrías compartir también tu oyente personalizado? podría ayudar a otros también –

2

No pude averiguar cómo obtener la distancia sobre la marcha del método, así que en su lugar acabo de establecer un nuevo umbral global en mi página.

//Override the default horizontalDistanceThreshold of 30 
$.event.special.swipe.horizontalDistanceThreshold = 200; 

Estoy usando una versión anterior de jQM (v1.0 todavía ...) así que esto puede haber cambiado. Es fácil de encontrar en la fuente si solo comienzas a buscar eventos de deslizamiento.

Cuestiones relacionadas