Обновлять координаты мыши Y каждые 100 мс - PullRequest
2 голосов
/ 07 октября 2011

Я пытаюсь сохранить координаты мыши Y в переменной startPosition ТОЛЬКО каждые 100 мс, пока .mousemove активен, пока нажата кнопка мыши (mousedown), мой код не работает для меня, я предполагаю, что это неправильно? Может кто-нибудь помочь мне разобраться?

    $(document).mousemove( function (e) {
        gesturesY = parseInt(e.pageY, 10);
        startPosition = setInterval(gesturesY, 100);
    });

EDIT: Я думаю, что это может быть совершенно новый вопрос? Извините за путаницу, ниже разъяснение моего беспорядочного беспорядка вопроса. Вот и мы:

http://jsfiddle.net/nicktheandroid/PCgFK/1/

Этот JSfiddle позволяет вам захватить страницу в поле прокрутки и перевернуть ее вверх или вниз, как телефон с сенсорным экраном. Прямо сейчас, если вы возьмете страницу (в области прокрутки) и переместите свою мышь вверх (вызывая прокрутку страницы вниз), затем отпустите кнопку мыши, скорость увеличится, и она немного перескочит страницу. Это происходит, когда вы на самом деле захватываете страницу и перемещаете ее вверх или вниз для прокрутки страницы, это делает ее приятной медленной и устойчивой остановкой. Если человек не щелкает, а просто перетаскивает страницу, а затем удерживает мышь в устойчивом положении и отпускает кнопку мыши, он скачет, как я уже говорил выше. Я пытаюсь избавиться от этого прыжка, когда человек хватает и перетаскивает страницу, а затем, когда мышь неподвижна, отпускает кнопку мыши.

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

Извините за путаницу, и спасибо всем, кто мог бы посвятить любое время, чтобы помочь мне.

Ответы [ 2 ]

5 голосов
/ 07 октября 2011

Нет ничего, чтобы действительно делать то, что вы хотите; лучший способ эмулировать это код ниже:

var currentPosition = 0;

$(document).mousemove(function (e) {
    currentPosition = e.pageX;
});

setInterval(function () {
    startPosition = currentPosition;
}, 100);

Это постоянно обновляет положение мыши, но обновляет ее до нужной вам переменной каждые 100 мс (в то же время обновляется другая переменная currentPosition.

Если вы хотите обновлять позицию каждые 100 мс из-за проблем с производительностью, во-первых, я бы дважды проверил, что вы не недооцениваете мощь компьютеров в эти дни. Однако если это проблема действительная , вам поможет следующий код:

var startPosition = 0;

$(document).mousemove(function (e) {
    startPosition = e.pageX;
});

setInterval(function () {
    // read in startPosition and do your **intensive** task here.
}, 100);

Здесь startPosition обновляется все время, но вы выполняете свой интервал только каждые 100 мс.

0 голосов
/ 07 октября 2011

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

var mouseY;
$(document).mousemove(function(e) {
    mouseY = e.pagey;
});

var startPosition;
setInterval(function() {
    startPosition = mouseY;
}, 100);

Ваш пример показывает отсутствие понимания базового JavaScript. Если вы не понимаете мой пример, просто спросите в комментариях, и я буду рад объяснить.

...