javascript - 如何在允许单指绘图的同时允许两指滚动 HTML Canvas 元素?

标签 javascript canvas html5-canvas touch

我正在尝试使用固定大小的 Canvas 制作 Canvas 绘图应用程序 - 但能够在 Canvas 上滚动以绘制根据用户的屏幕尺寸可能不可见的不同点。

它可以在桌面上滚动,但我正在尝试在移动设备上实现两指滚动。

http://jsbin.com/qugabuh/edit

在我的触控绘图功能中,我尝试了以下操作:

const startTouch = function(e) {
  if (e.targetTouches.length < 2) {
    ctx.beginPath();
    x = e.changedTouches[0].pageX + content.scrollLeft;
    y = e.changedTouches[0].pageY - 34 + content.scrollTop;
    ctx.moveTo(x, y);
  }
};

const moveTouch = function(e) {
  if (e.targetTouches.length < 2) {
    e.preventDefault();
    x = e.changedTouches[0].pageX + content.scrollLeft;
    y = e.changedTouches[0].pageY - 34 + content.scrollTop;
    ctx.lineTo(x, y);
    ctx.stroke();
  }
};

这在我的 Android 平板电脑上似乎可以正常工作(尽管如果我不同时抬起两个手指,有时会画线),但在我的 iPhone 上根本不行。

最佳答案

尝试使用标志来控制开始事件触摸。

    const startTouch = function(e) {
        if (e.target === canvas && e.touches.length === 1) {
            ctx.beginPath();
            x = e.changedTouches[0].pageX + content.scrollLeft;
            y = e.changedTouches[0].pageY - 34 + content.scrollTop;
            ctx.moveTo(x, y);
            
            drawable = true;
        }else{
            drawable = false;
        }
    };
看:
https://codepen.io/Luis4raujo/pen/RwoZVXE

关于javascript - 如何在允许单指绘图的同时允许两指滚动 HTML Canvas 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443283/

相关文章:

javascript - 如何维护 mongodb 中用户可定制的实体顺序?

javascript - Canvas 饼图中的标签

javascript - 单击事件坐标与形状位置不同

html - 在 Canvas 上制作可拖动、可调整大小的图像

javascript - Canvas - 多重合成操作

javascript - HTML5 Canvas 位图

javascript - 如何将事件处理程序绑定(bind)到 <option>

javascript - 当我们按下按钮时,进度条会增加

javascript - 提交后显示来自 http 请求的嵌套结果

javascript - 为什么 toDataURL 这么慢?