收藏
回答

在canvas上进行双指缩放操作e.touches返回的数组有时候不准确

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

1.在canvas上绘制一张图片

2.监听canvas的touchmove,touchstart等事件

3.先双指操作放大和缩小图片,多操作几次

4.然后再单指移动图片,此时发现仍然在缩放,

5.我区分是移动还是缩放是根据e.touches的数组长度来判断的,单指的时候也就是在第四步的时候发现e.touches数组长度仍然是2

单指的时候e.touches的长度应该是1才正确吧?

回答关注问题邀请回答
收藏

5 个回答

  • 社区技术运营专员-娇华
    社区技术运营专员-娇华
    2020-03-16

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    用出现问题的手机扫下面的小程序码,提供下扫码结果截图

    2020-03-16
    有用
    回复 12
    • superFei525
      superFei525
      2020-03-16
      代码链接https://developers.weixin.qq.com/s/EubYYTm47ZfA
      2020-03-16
      回复
    • superFei525
      superFei525
      2020-03-16
      2020-03-16
      回复
    • superFei525
      superFei525
      2020-03-16
      在真机运行代码片段,先双指滑动,查看console出来的手指个数正确,然后再单指滑动,发现手指个数还是2,难道判断手指个数不是用e.touches的length?
      2020-03-16
      回复
    • 社区技术运营专员-娇华
      社区技术运营专员-娇华
      2020-03-16回复superFei525
      收到,我们看下,有进展再同步
      2020-03-16
      回复
    • Miracle
      Miracle
      2020-05-09
      解决了吗,也遇到同样的问题
      2020-05-09
      回复
    查看更多(7)
  • 12345
    12345
    2020-10-14

    有解决的办法吗、也遇到了这个问题

    2020-10-14
    有用
    回复
  • 宝城
    宝城
    2020-09-06

    问题依然存在。官方修复的怎么样了啊?

    2020-09-06
    有用
    回复
  • @我是一个火头兵@
    @我是一个火头兵@
    2020-06-28
    // 过滤触摸事件,目的是为了覆盖小程序Canvas返回的事件对象中touches数组不正确的问题
    // NOTE: 但是该方法面对超过两点触摸的场景,可能会出现抖动问题,考虑到当前需求只用到两点触摸,暂时多点触摸作为非法输入考虑.
    // TODO: 期待更好的修复方法
    getCanvasEvent(e) {
      console.log('e: ', e);
      if (e.changedTouches.length >= 1) {
        const base = e.changedTouches[0].identifier;
        const index = (e.touches || []).findIndex(i => i.identifier == base);
        let newTouches = [];
        if (index > 0 && e.touches[index - 1].identifier === base - 1) {
          newTouches.push(e.touches[index - 1]);
        }
        newTouches = newTouches.concat(e.touches.filter(i => i.identifier >= base));
        return { ...e, touches: newTouches };
      } else {
        return e;
      }
    }
    
    2020-06-28
    有用
    回复
  • superFei525
    superFei525
    2020-03-15

    重现情况是先双指滑动,然后再单指滑动,此时单指的e.touches里面返回了两个数据,这个跟html里面的canvas变现不一致

    2020-03-15
    有用
    回复
登录 后发表内容
问题标签