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

时间:2016-06-02 14:36:00

标签: javascript html canvas

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



var targetStartX, targetStartY, touchStartX, touchStartY;

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; // Calculate touch

    setTimeout(function() {

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

      canvas.style.top = targetStartY + touchOffsetY + 'px';
      canvas.style.left = targetStartX + touchOffsetX + 'px';

    }, 200);
  }
}




我想创建一个使用两根手指旋转整个画布的新功能。我在代码中尝试了canvas.rotate,但我认为我没有使用正确的命令。

1 个答案:

答案 0 :(得分:1)

确实没有这样的命令!

首先,您需要修改您的功能以检测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:不要忘记为浏览器添加前缀,你应该完成。