收藏
回答

e.touches个数有时不准确?(canvas双指操作在中有时会自动在最后出现一次单指操作)

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug canvas 微信安卓客户端 7.0.21 2.14.1

通过bindtouchmove监听touches.length个数来判断是单指还是双指操作,双指操作时图片缩放,单指时平移。

当双指操作完后,有时会在move事件的最后出现一次length为1的情况。即出本应该全为双指操作,结果在双指操作完之后有时会自动出现一次单指操作,导致图片位置在缩放结束后自动移动。

  canvasTouchMove(e) {
    let item = this.data.currentCategory
    console.log("move", e.touches.length) //打印发现双指缩放时全为2,但有时会自动在双指操作结束时出现一次1
    // 如果当前图片为选中状态
    if (this.data.drawList[item].selected) {
      // 单指移动
      if (e.touches.length === 1) {
        // y为当前touch的坐标,lastY为上一次move时坐标
        let y = e.touches[0].y
        let lastY = this.data.startTouch.y
        this.data.drawList[item].offset += y - lastY

        // 更新startTouch,得到两次之间的差值
        this.data.startTouch.y = e.touches[0].y
        this.maskRender()
      }
      // 双指缩放
      if(e.touches.length === 2) {
        let distance = this.getDistance(e.touches[0], e.touches[1])
        let distanceDiff = distance - this.data.oldDistance
        this.data.oldDistance = distance

        let newscale = this.data.drawList[item].scale + 0.0007 * distanceDiff
        console.log(newscale)
        this.data.drawList[item].scale = newscale
        this.maskRender()
      }
    }
  },
最后一次编辑于  2021-01-03
回答关注问题邀请回答
收藏

1 个回答

登录 后发表内容
问题标签