2013-11-08 1 views
1

У меня есть некоторые проблемы. Мне нужно вычислить движение мыши в пикселях от mousedown до mouseup. Поэтому у меня есть этот код:Как рассчитать расстояние перемещения мыши от заданного смещения

selectArea.on({ 
    mousedown : function(e) { 
     select = true; 
    }, 
    mousemove : function(e) { 
     var x2, y2, offset = $(this).offset(); 
      x2 = e.pageX - offset.left, 
      y2 = e.pageY - offset.top, 
      width = ?, 
      height = ? 
     ... 
    }, 
    mouseup : function() { 
     select = false; 
    } 
}); 

Теперь мне нужно знать, сколько пикселей я переместил мышь от MouseDown смещения MouseUp смещения, есть ли вычислить Возможное это? Многое спасибо за помощь.

+0

Не проще ли сохранить положение мыши в 'mousedown' и сравнить его с фактическим местоположением в' mouseup'? Таким образом, вы можете избавиться от «mousemove» и просто «мышиная позиция мыши» - позиция «mousedown origin». Тогда вы получили свое смещение. – TCHdvlp

+0

http://stackoverflow.com/questions/8686619/how-can-i-detect-the-distance-that-the-users-mouse-has-moved – Robb

+0

Хотите ли вы подсчитать общее количество пройденных пикселей или просто расстояние, пройденное от начальной позиции до текущего? –

ответ

2

Есть два различных решения, в зависимости от вашего определения «сколько пикселей я переехал»

Сценарий: мышь движется 25px вправо и 75 пикселей влево.

Решение 1: 50px; (расстояние между началом и концом)

В обработчике mousedown вы сохраняете координаты мыши. В обработчике mouseup вы вычисляете разницу между текущими координатами мыши и сохраненными.

Решение 2: 100px; (расстояние)

В обработчике mousedown вы устанавливаете логическое значение, чтобы указать, что вы записываете и сохраняете координаты мыши и инициализируете расстояние с помощью 0. В обработчике mousemove вы вычисляете разницу между текущими координатами мыши и сохраненные координаты (добавьте его на расстояние), а затем вы замените сохраненные координаты на текущие координаты мыши. В обработчике mouseup вы выводите расстояние и освобождаете логическое значение.

Вы код, кажется, для второго решения, но вопрос требует первого.

+0

Можно ли установить пример? – Lukas

+0

Вот пример, который я просто вымотал вместе, чтобы пройти дистанцию: http://jsfiddle.net/RoryMcCrossan/8ahQB/, хотя кажется, что вам нужен первый. –

+0

это хорошо, много thx – Lukas

 Смежные вопросы

  • Нет связанных вопросов^_^