0

我有这段代码在 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);
}
4

0 回答 0