2010-02-12 24 views
20

¿Hay una manera de comprobar si la barra espaciadora, y al mismo tiempo de pista en qué dirección se está moviendo el ratón y en qué medida, etc.Compruebe si se está presionando la barra espaciadora y el mouse se está moviendo al mismo tiempo con jQuery?

punto de esto es que quiero replicar la forma en rollos de Photoshop cuando se mantiene el espacio barra, botón izquierdo del mouse y mueve el mouse, pero sin tener que mantener presionado el botón izquierdo del mouse.

Respuesta

53

Puede usar keydown() y keyup() para rastrear si se presiona la barra espaciadora o no y observar ese estado en su controlador de eventos mousemove(). Por ejemplo:

var space = false; 
$(function() { 
    $(document).keyup(function(evt) { 
    if (evt.keyCode == 32) { 
     space = false; 
    } 
    }).keydown(function(evt) { 
    if (evt.keyCode == 32) { 
     space = true; 
     console.log('space') 
    } 
    }); 
}); 

Y a continuación, el controlador de mousemove() puede ver si está presionado o no.

4

es probable que tengas que estar atento al evento de selección, verifica que sea la barra espaciadora, establecer una variable diciendo que está inactivo, desestabilizarlo cuando se ve el evento de programación.

entonces, entonces buscaría los movimientos del mouse cuando esa variable se configuró para indicar que se presionó la barra espaciadora.

+0

+1 Me pegó. –

3

Esta es mi solución:

var allowed = true; 
$(document).ready(
function() { 
    $(document).bind('keydown', 'space', function() { 
     if (!allowed) return; 
     allowed = false; 
     $('#viewport'). 
      dragscrollable(); 
    }); 
    $(document).bind('keyup', 'space', function() { 
     allowed = true; 
     $('#base').off('mousedown'); 
     return false; 
    }); 

}); 

Funciona con jQuery y el plugin Dragscrollable.

Cuestiones relacionadas