Javascript 触摸事件的movementX和movementY备选方案是什么?
我知道当鼠标在画布区域上移动时如何跟踪鼠标的移动Javascript 触摸事件的movementX和movementY备选方案是什么?,javascript,Javascript,我知道当鼠标在画布区域上移动时如何跟踪鼠标的移动 var canvas=document.getElementById(“canvas”); var info=document.getElementById(“info”); 功能(e){ info.innerHTML=“x更改:”+String(e.movementX)+”,y更改:“+String(e.movementY); } canvas.addEventListener(“mousemove”,getMovements) 画布{ 背景
var canvas=document.getElementById(“canvas”);
var info=document.getElementById(“info”);
功能(e){
info.innerHTML=“x更改:”+String(e.movementX)+”,y更改:“+String(e.movementY);
}
canvas.addEventListener(“mousemove”,getMovements)代码>
画布{
背景色:深蓝色;
}
没有此类属性,因为触摸事件可以有多个触摸。但是,在调用getMovements
函数之前,您可以自己将这些属性添加到touchevent中
var-previousTouch;
canvas.addEventListener(“touchmove”,(e)=>{
const touch=e.touch[0];
如果(上一次触摸){
//请注意,这些仅存储触摸阵列中第一次触摸的移动
e、 movementX=touch.pageX-previousTouch.pageX;
e、 movementY=touch.pageY-previousTouch.pageY;
运动(e);
};
以前的触摸=触摸;
});
如果需要,您可以在touchend
事件中将previousTouch
设置为null,以防止新的触摸在第一次移动时使用旧的previousTouch
canvas.addEventListener(“touchend”,(e)=>{
previousTouch=null;
});
当我尝试你的代码时,它会在第行开始调试previousTouch=touch
这段代码是否在你的机器上工作,我用你的
重播prev listener做了些错事?让
可以重新分配。。。这是因为let
在当前范围内定义了一个变量,而var
在previousTouch=touch时被提升到全局范围错误代码>因为触摸未定义。请接受我的编辑,您的代码将正常工作。我会打勾回答!别担心!我只是有时会发现自己通过阅读答案上的评论来解决问题,所以我想对于下一个人,也许我可以帮助避免一些困惑。:)var
的作用域是它声明的函数,而不是全局作用域<代码>let
是块范围。