Javascript 检测移动设备上的触摸移动事件
我正致力于检测水平拖动功能,该功能将检测X方向的运动变化。以下是代码:Javascript 检测移动设备上的触摸移动事件,javascript,html,touch-event,Javascript,Html,Touch Event,我正致力于检测水平拖动功能,该功能将检测X方向的运动变化。以下是代码: const myObject = document.getElementById("scroll-window"); play3D() var a = 0 var b = 0 myObject.onpointerdown = (e) => { a = e.clientX; myObject.onpointermove = (e) => { b = e.cli
const myObject = document.getElementById("scroll-window");
play3D()
var a = 0
var b = 0
myObject.onpointerdown = (e) => {
a = e.clientX;
myObject.onpointermove = (e) => {
b = e.clientX;
var motionx = e.movementX
if (e.movementX >=10){
motionx = 10
}
moveX = b-a;
if (moveX>5){
console.log(moveX)
setImage(+1);
a = b;
} else if (moveX<5){
setImage(-1);
}
a = b;
}
}
myObject.onpointerup = (e) => {
moveX = 0;
myObject.onpointermove = null;
}
constmyobject=document.getElementById(“滚动窗口”);
play3D()
变量a=0
var b=0
myObject.onpointerdown=(e)=>{
a=e.clientX;
myObject.onpointermove=(e)=>{
b=e.clientX;
var motionx=e.movementX
如果(e.movementX>=10){
运动X=10
}
moveX=b-a;
如果(移动X>5){
console.log(moveX)
setImage(+1);
a=b;
}else if(moveX{
moveX=0;
myObject.onpointermove=null;
}
这适用于桌面,但不适用于移动设备。
有人能告诉我可以做些什么来实现这一点吗?
指针[…]
事件不适用于触摸。对于触摸,您需要触摸[…]
事件
myObject.addEventListener("touchstart", (e) => {
...
});
// touchstart, touchmove, touchend, touchcancel
代码的其他部分基本相同
请在此处阅读更多信息:
作为旁注,
指针[…]
事件已被淘汰,取而代之的是鼠标[…]
事件。您可能希望切换到这些事件
请在此处阅读更多信息:
根据OP的请求,如果希望在两个事件上发生相同的操作,只需显式声明事件处理程序函数,并将其传递给
addEventListener()
两次。类似如下:
function hdlr1(ev) {
// Handle event here
}
myObject.addEventListener("touchstart", hdlr1);
myObject.addEventListener("mousedown", hdlr1);
...
但是我个人不建议在这种情况下使用,因为您可能希望在将来赋予鼠标和触摸稍微不同的行为。此外,您应该注意只使用鼠标[…]和鼠标[…]共有的属性和功能events。我不打算在这个答案中解释多态性,但基本上你应该将此处理程序中的事件视为
UIEvent
,因为UIEvent
是MouseEvent
和TouchEvent的最后一个共同祖先,你能告诉我mousedown和touch事件是否可以组合在一起吗移动设备上的帽子触摸部分代码有效,而台式机上的鼠标部分代码有效?