通过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()
}
}
},
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),并详细描述下复现的流程。