我想计算touchstart的初始值与touchmove上的实际值之间的距离。
例如:
我触摸屏幕:startX = 100; 然后,我在屏幕上移动手指:moveX = 150;
startX和moveX的距离是(moveX - startX)= 50;
CODE UPDATED:
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;
};
答案 0 :(得分:0)
您moveX
在不同的函数中声明,因此表示不同的变量。在所有这些函数的封闭范围内声明var moveX
(我想您可能希望对startX
执行相同的操作)。
答案 1 :(得分: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
处理程序。等等。