event.PageX, event.PageY

251
02 марта 2019, 01:40

При перемещении курсора над элементом (подозреваю mousemove) требуется фиксировать два значения позиции курсора. Например по оси Х. Одно из них в настоящий момент, второе которое было, к примеру, 100 миллисекунд назад. Чтобы можно было их сравнить между собой.

Answer 1

Если над элементом, то решение очевидно:

var oArea = document.querySelector('.area'); 
var nVectorX, nVectorY, tCheck, bCheck; 
oArea.addEventListener('mousemove', function(event) { 
  if (!bCheck) { nVectorX = event.offsetX; nVectorY = event.offsetY; bCheck = true; } 
  if (!tCheck) { 
    tCheck = setTimeout(function() { 
      if (nVectorX > event.offsetX) { 
        oArea.innerHTML = '  LEFT ('; 
      } else if (nVectorX < event.offsetX) { 
        oArea.innerHTML = ' RIGHT ('; 
      } else { 
        oArea.innerHTML = '     X ('; 
      } 
      oArea.innerHTML += nVectorX + '_' + event.offsetX + ')  '; 
      if (nVectorY > event.offsetY) { 
        oArea.innerHTML += '  UP ('; 
      } else if (nVectorY < event.offsetY) { 
        oArea.innerHTML += 'DOWN ('; 
      } else { 
        oArea.innerHTML += '   Y ('; 
      } 
      oArea.innerHTML += nVectorY + '_' + event.offsetY + ')'; 
      if (nVectorY == event.offsetY && nVectorX == event.offsetX) { 
        oArea.innerHTML = 'STOP'; 
        clearTimeout(tCheck); 
      } 
      nVectorX = event.offsetX; 
      nVectorY = event.offsetY; 
      tCheck = null; 
    }, 100); 
  } 
});
.area { 
  width: 400px; 
  height: 180px; 
  margin: 0 auto; 
  cursor: crosshair; 
  border: 1px solid #090; 
}
<pre class="area"></pre>

PS Извиняюсь, что не jQuery - ну, не люблю я его))

READ ALSO
Связь положений XYZ камеры и игрока

Связь положений XYZ камеры и игрока

Вообще, просто нужно сделать так, что бы камера и тело игрока поворачивались одинаково, ибо без этого нельзя сделать нормальную ходьбу, потому...

196
Как запустить несколько корутин в Unity

Как запустить несколько корутин в Unity

Всем приветНачал работать с одним проектом

195
Как деэкранировать строку в c#

Как деэкранировать строку в c#

На вход поступает строка вида : "\\t", которая экранируется как "\t"

217
Приведение к интерфейсу

Приведение к интерфейсу

Есть классПредположим, что у него есть определенные свойства, методы, события

190