我有这段代码在 chrome 桌面上工作。我使用模拟触摸对其进行了测试,它按预期工作。当我尝试在平板电脑上使用 Android 版 chrome 观看时,我大吃一惊。这很复杂,但它应该创建一个用于控制相机的触摸板。它捕获开始,如果您将手指移动到任何一侧 50 像素,您就会开始朝它移动。当您停止触摸垫应该消失并且运动应该停止。同时,当我在平板电脑上这样做时,它根本不动,而且当我停止触摸时,如果我移动了手指,垫子永远不会隐藏......我不知道这是不是我的代码或浏览器本身的问题。
编辑:我尝试了适用于 android 的 firefox,它可以工作。它一定是关于 chrome 的东西......我认为它与 e.preventDefault();
代码如下:
function handleStart (event) {
mando.tactil=true;
mando.tactilX=event.changedTouches[0].clientX;
mando.tactilY=event.changedTouches[0].clientY;
}
function handleEnd (event) {
mando.tactil=false;
animTactil();
mando.tactilX=0;
mando.tactilY=0;
mando.tactilMoveX=0;
mando.tactilMoveY=0;
}
function handleMove (event) {
mando.tactilMoveX=event.changedTouches[0].clientX;
mando.tactilMoveY=event.changedTouches[0].clientY;
animTactil();
}
function animTactil () {
if(mando.tactilX>w/3){
//TACTIL DERECHA
if(mando.tactilMoveX>mando.tactilX+tamanoDedo && mando.tactil){
mando.de=true;
}else if(mando.tactilMoveX>mando.tactilX+tamanoDedo && !mando.tactil && mando.de || mando.de && mando.tactil){
mando.de=false; mando.inerciaDE = vel;
}else{mando.de=false;}
//TACTIL IZQUIERDA
if(mando.tactilMoveX<mando.tactilX-tamanoDedo && mando.tactil){
mando.iz=true;
}else if(mando.tactilMoveX<mando.tactilX-tamanoDedo && !mando.tactil && mando.iz || mando.iz && mando.tactil){
mando.iz=false; mando.inerciaIZ = vel;
}else{mando.iz=false;}
//TACTIL ARRIBA
if(mando.tactilMoveY<mando.tactilY-tamanoDedo && mando.tactil){
mando.ar=true;
}else if(mando.tactilMoveY<mando.tactilY-tamanoDedo && !mando.tactil && mando.ar || mando.ar && mando.tactil){
mando.ar=false; mando.inerciaAR = vel;
}else{mando.ar=false;}
//TACTIL ABAJO
if(mando.tactilMoveY>mando.tactilY+tamanoDedo && mando.tactil){
mando.ab=true;
}else if(mando.tactilMoveY>mando.tactilY+tamanoDedo && !mando.tactil && mando.ab || mando.ab && mando.tactil){
mando.ab=false; mando.inerciaAB = vel;
}else{mando.ab=false;}
}
}
if(tactil){
canvas.addEventListener("touchstart", handleStart, false);
canvas.addEventListener("touchend", handleEnd, false);
canvas.addEventListener("touchmove", handleMove, false);
}