Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript用两个手指旋转整个画布?_Javascript_Html_Canvas - Fatal编程技术网

如何使用JavaScript用两个手指旋转整个画布?

如何使用JavaScript用两个手指旋转整个画布?,javascript,html,canvas,Javascript,Html,Canvas,我正在使用此功能用一个手指滚动绘图画布: var targetStartX、targetStartY、touchtstartx、touchtstarty; 函数onCanvasTouchscroll(事件){ if(event.touchs.length==1){ targetStartX=parseInt(event.target.style.left); targetStartY=parseInt(event.target.style.top); touchStartX=event.Tou

我正在使用此功能用一个手指滚动绘图画布:

var targetStartX、targetStartY、touchtstartx、touchtstarty;
函数onCanvasTouchscroll(事件){
if(event.touchs.length==1){
targetStartX=parseInt(event.target.style.left);
targetStartY=parseInt(event.target.style.top);
touchStartX=event.Touchs[0].pageX;
touchStartY=event.touchs[0].pageY;
var touchOffsetX=(event.touchs[0].pageX-touchStartX)/10,
touchOffsetY=(event.touchs[0].pageY-touchStartY)/10;//计算触摸
setTimeout(函数(){
var touchOffsetX=(-event.touchs[0].pageX+touchStartX)/10,
touchOffsetY=(-event.touchs[0].pageY+touchStartY)/10;//计算触摸
canvas.style.top=targetStartY+touchOffsetY+'px';
canvas.style.left=targetStartX+touchfoffsetx+'px';
}, 200);
}

}
确实没有这样的命令

首先,您需要修改功能以检测2个手指触摸事件,然后旋转画布

function onCanvasTouchscroll( event )
{

    if(event.touches.length == 1)
    {
    targetStartX = parseInt(event.target.style.left);
    targetStartY = parseInt(event.target.style.top);
    touchStartX  = event.touches[0].pageX;
    touchStartY  = event.touches[0].pageY;

    var touchOffsetX = (event.touches[0].pageX - touchStartX)/10,
    touchOffsetY = (event.touches[0].pageY - touchStartY)/10; 

      setTimeout(function(){    
         var touchOffsetX = (-event.touches[0].pageX + touchStartX)/10,
         touchOffsetY = (-event.touches[0].pageY + touchStartY)/10;

         canvas.style.top = targetStartY + touchOffsetY + 'px';
         canvas.style.left = targetStartX + touchOffsetX + 'px'; 
      }, 200);
   }
   else if (event.touches.length > 1) // 2 fingers
   {
    var rotation = event.rotation;

      if (!rotation)
      {
      rotation = Math.arctan2(event.touches[0].pageY - event.touches[1].pageY,
      event.touches[0].pageX - event.touches[1].pageX) * 180 / Math.PI;
      }

   canvas.style.transform = "rotate(" + rotation + "deg)";
   }
}

PS:别忘了为浏览器添加前缀,你应该这样做。

确实没有这样的命令

首先,您需要修改功能以检测2个手指触摸事件,然后旋转画布

function onCanvasTouchscroll( event )
{

    if(event.touches.length == 1)
    {
    targetStartX = parseInt(event.target.style.left);
    targetStartY = parseInt(event.target.style.top);
    touchStartX  = event.touches[0].pageX;
    touchStartY  = event.touches[0].pageY;

    var touchOffsetX = (event.touches[0].pageX - touchStartX)/10,
    touchOffsetY = (event.touches[0].pageY - touchStartY)/10; 

      setTimeout(function(){    
         var touchOffsetX = (-event.touches[0].pageX + touchStartX)/10,
         touchOffsetY = (-event.touches[0].pageY + touchStartY)/10;

         canvas.style.top = targetStartY + touchOffsetY + 'px';
         canvas.style.left = targetStartX + touchOffsetX + 'px'; 
      }, 200);
   }
   else if (event.touches.length > 1) // 2 fingers
   {
    var rotation = event.rotation;

      if (!rotation)
      {
      rotation = Math.arctan2(event.touches[0].pageY - event.touches[1].pageY,
      event.touches[0].pageX - event.touches[1].pageX) * 180 / Math.PI;
      }

   canvas.style.transform = "rotate(" + rotation + "deg)";
   }
}

PS:别忘了为浏览器添加前缀,你应该这样做。

模拟的东西:内容..整个画布模拟的东西:内容..整个画布不工作,但感谢canvas.style.transform当我给它一个固定值时它会旋转画布不工作,但感谢canvas.style.transform它会旋转画布画布,当我给它一个固定的值