Можно ли сохранить первое значение pageX на сенсорном запуске? - PullRequest
0 голосов
/ 15 февраля 2012

Я хочу рассчитать расстояние между начальным значением сенсорного пуска и фактическим значением при сенсорном перемещении.

для примера:

Я касаюсь экрана: startX = 100;Затем я перемещаю палец по экрану: moveX = 150;

Расстояние от startX и moveX равно (moveX - startX) = 50;

КОД ОБНОВЛЕН:

function touch(event) {
var moveX = event.pageX;
var totalMoved = Math.abs(document.startX - moveX);
shipX = totalMoved;
consoleLog(totalMoved);
};

function touchStart(event) {
    touch(event.touches[0]);
    document.startX = event.pageX;
};

function touchMove(event) {
    event.preventDefault();
    touch(event.touches[0]);
}; 

function touchEnd(event) {
    touch(event.touches[0]);
    var totalMoved = 0;
}; 

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Да, это возможно.Вам просто нужно сохранить значение в области видимости, которая будет видна в вашей функции touchMove().Для иллюстрации, мы можем решить эту проблему, загрязняя глобальную область:

function touchStart(event) {
    touch(event.touches[0]);
    window.startX = event.pageX;
};

function touchMove(event) {
    event.preventDefault();
    var moveX = event.pageX;
    var totalMoved = Math.abs(window.startX - moveX);
}; 

Конечно, есть разные способы сделать это, не загрязняя глобальную область.Например, вы можете сделать так, чтобы функции вашего обработчика событий были членами некоторого объекта, который содержит необходимое состояние в качестве переменных-членов.Или обработчик touchStart() может создать замыкание, которое инкапсулирует переменную startX, а затем установить его в качестве обработчика touchesMoved.И так далее.

0 голосов
/ 15 февраля 2012

Вы moveX s объявлены в разных функциях и, следовательно, обозначают разные переменные.Вместо этого объявите var moveX во вложенной области видимости для всех этих функций (я думаю, вы можете сделать то же самое с startX).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...