0

我想计算touchstart的初始值和touchmove上的实际值之间的距离。

举个例子 :

我触摸屏幕: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;
}; 
4

2 回答 2

0

You moveXs 在不同的函数中声明,因此表示不同的变量。改为在所有这些函数的封闭范围内声明var moveX(我猜你可能想对 做同样的事情startX)。

于 2012-02-15T10:38:34.100 回答
0

是的,这是可能的。您只需要将值存储在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处理程序。等等。

于 2012-02-15T10:41:02.360 回答