Javascript 双闭合以检测滑动方向
以下内容不会在每次滑动时将我的闭包x和y变量重置为零。您能告诉我如何在每次刷卡时将x和y变量重置为零吗?也可以随意使用更好的实现技术,如咖喱或其他东西,使其更具功能性。请注意,我更感兴趣的是为什么这不起作用,以及闭包/套用实现技术,然后检测刷卡方向本身Javascript 双闭合以检测滑动方向,javascript,Javascript,以下内容不会在每次滑动时将我的闭包x和y变量重置为零。您能告诉我如何在每次刷卡时将x和y变量重置为零吗?也可以随意使用更好的实现技术,如咖喱或其他东西,使其更具功能性。请注意,我更感兴趣的是为什么这不起作用,以及闭包/套用实现技术,然后检测刷卡方向本身 ;(功能(){ 常数t=功能(启动){ 设x=0 设y=0 设x1=0 设y1=0 如果(启动){ 返回函数(evt){ x=0 y=0 console.log(x,y) } }否则{ 返回函数(evt){ const touchs=evt.c
;(功能(){
常数t=功能(启动){
设x=0
设y=0
设x1=0
设y1=0
如果(启动){
返回函数(evt){
x=0
y=0
console.log(x,y)
}
}否则{
返回函数(evt){
const touchs=evt.changedtouchs
如果(x1>接触[0]。clientX)x++
如果(y1>触及[0].clientY)y++
x1=触摸[0]。客户端X
y1=触摸[0]。客户端
console.log(x,y)
}
}
}
document.body.addEventListener(“touchstart”,t(真))
document.body.addEventListener(“touchmove”,t(false))
}())
html,正文{
保证金:0;
填充:0;
宽度:100%;
身高:100%;
}
打开移动模式并向不同方向滑动
对t
的每次调用都会使用自己的x
和y
变量创建自己的范围。这正是你不想看到的,所以不要再闭嘴了。在同一范围内创建两个处理程序函数:
;(function() {
let x = 0;
let y = 0;
let x1 = 0;
let y1 = 0;
document.body.addEventListener("touchstart", (evt) => {
x = 0;
y = 0;
console.log(x, y);
});
document.body.addEventListener("touchmove", (evt) => {
const touches = evt.changedTouches;
if (x1 > touches[0].clientX) x++;
if (y1 > touches[0].clientY) y++;
x1 = touches[0].clientX;
y1 = touches[0].clientY;
console.log(x, y);
});
}());
对
t
的每次调用都使用自己的x
和y
变量创建自己的作用域。这正是你不想看到的,所以不要再闭嘴了。在同一范围内创建两个处理程序函数:
;(function() {
let x = 0;
let y = 0;
let x1 = 0;
let y1 = 0;
document.body.addEventListener("touchstart", (evt) => {
x = 0;
y = 0;
console.log(x, y);
});
document.body.addEventListener("touchmove", (evt) => {
const touches = evt.changedTouches;
if (x1 > touches[0].clientX) x++;
if (y1 > touches[0].clientY) y++;
x1 = touches[0].clientX;
y1 = touches[0].clientY;
console.log(x, y);
});
}());
预期的结果是什么?x和y应该在两次滑动之间重置为0,但它只是继续递增。
x
,y
应该在touchstart
处理程序中分别设置为0
,是吗?是的,并且在日志中可以看到它确实被触发,但是第二个闭包没有考虑它,因为我不明白为什么。t(true)
对t(false)
一无所知。它们是完全不同的堆栈框架上的完全不同的闭包。您是否希望它们相互影响?预期的结果是什么?x和y应在两次滑动之间重置为0,但它只是继续递增。x
,y
是否应在touchstart
处理程序中将每个设置为0
,是吗?是的,并且在日志中可以看到它确实被触发,但是第二个闭包没有考虑它,因为我不明白为什么。t(true)
对t(false)
一无所知。它们是完全不同的堆栈框架上的完全不同的闭包。你期望他们互相影响吗?