【问题标题】:How to rotate the whole canvas with two fingers using JavaScript?如何使用 JavaScript 用两根手指旋转整个画布?
【发布时间】:2016-06-02 14:35:59
【问题描述】:

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

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,但我认为我没有使用正确的命令。

【问题讨论】:

标签: javascript html canvas


【解决方案1】:

确实没有这样的命令!

首先你需要修改你的函数来检测两指触摸事件,然后旋转你的画布。

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 当我给它一个固定值时它会旋转画布
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2015-10-22
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多