このコードは chrome デスクトップで動作しています。シミュレート タッチを使用してテストしたところ、期待どおりに動作しました。Android 用の chrome を使用して、タブレットで見ようとしたときに驚きました。これは複雑ですが、カメラを制御するためのタッチパッドを作成することになっています。開始をキャプチャし、指をいずれかの側に 50 ピクセル移動すると、その方向に移動し始めます。パッドに触れるのをやめると、パッドが消えて動きが止まるはずです。一方、タブレットでこれを行うと、まったく動かず、さらに、タッチをやめると、指を動かした場合、パッドが隠れることはありません...これは私のコードの問題か、ブラウザ自体の問題か。
編集: Android 用の firefox を試してみましたが、動作します。それはクロムに関するものでなければなりません... 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);
}