Определить реальное направление мыши - PullRequest
0 голосов
/ 04 января 2019

Моя цель - определить направление последнего движения мыши перед срабатыванием события mouseup.

Чтобы избежать проверки небольших непроизвольных движений (например: я иду с мышью вправо на 100 пикселей и затем останавливаюсьно невольно сделайте 2 пикселя влево) Я подтвердил бы направление только после того, как указатель мыши достиг минимального безопасного расстояния (промежутка) от последней точки, где он изменил свое направление.

Вот упрощение моегореализация:

var direction = "",
oldx = 0,
invert = 0,
gap = 10,
move = "",
mousemovemethod = function (e) {

    if (e.pageX < oldx) {
        if(direction == "right") invert = e.pageX;
        direction = "left";
        if(e.pageX < invert - gap) move = "left";
    } else if (e.pageX > oldx) {
        if(direction == "left") invert = e.pageX;
        direction = "right"
        if(e.pageX > invert + gap) move = "right";
    }

    document.body.innerHTML = "moving " + direction + ", last inversion point: " + invert + ", Validated movement: " + move;

    oldx = e.pageX;

}

document.addEventListener('mousemove', mousemovemethod);

А вот и скрипка

Код работает, но мне кажется многословным и неясным.Я всегда был плох в реализации такого рода, и мне было интересно, знает ли кто-нибудь более изящный способ работы с этой механикой.

Любое предложение приветствуется.

1 Ответ

0 голосов
/ 04 января 2019
function smooth(){
    var direction="",
    oldx = 0,
    noise=10,
    dir=0;
    mousemove=function(e){
       dir=oldx-e.pageX;
       if(Math.abs(dir)> noise){
          (dir <=0 )?direction="right":direction="left";
          oldx=e.pageX;
       }
       document.body.innerHTML = "moving " + direction;
   };
   document.addEventListener('mousemove', mousemove);
}

Как насчет этого?

...