手势检测:单击、双击、缩放、旋转

单击(tap)

手势检测的关键是用 touchstart,touchmove,touchend 三个事件对手势进行分解 。

那么怎么分解单击事件呢?

  1. 在 touchstart 发生时进入单击检测,只有一个接触点。因为单击事件限制为一个手指的动作。

  2. 没有发生 touchmove 事件或者 touchmove 在一个很小的范围(如下图)。限制 touchmove 在一个很小范围,是为了给用户一定的冗余空间,因为不能保证用户手指在接触屏幕的时候不发生轻微的位移。

  3. touchend 发生在 touchstart后的很短时间内(如下图)。这个时间段的阈值是毫秒级,用来限制手指和屏幕接触的时间。因为单击事件从开始到结束是很快的。

_getTime() {
  return new Date().getTime(); 
}

_onTouchStart(e) {
    //记录touch开始的位置
    this.startX = e.touches[0].pageX;
    this.startY = e.touches[0].pageY;
    if(e.touches.length > 1) {
      //多点监测
    }else {
      //记录touch开始的时间
      this.startTime = _getTime();
    }
 }
_onTouchMove(e) {
  //记录手指移动的位置
  this.moveX = e.touches[0].pageX;
  this.moveY = e.touches[0].pageY;
}
_onTouchEnd(e) {
  let timestamp = _getTime();
  if(this.moveX !== null && Math.abs(this.moveX - this.startX) > 10 ||
    this.moveY !== null && Math.abs(this.moveY - this.startY) > 10) {
  }else {
    //手指移动的位移要小于10像素并且手指和屏幕的接触时间要短语500毫秒
    if(timestamp - this.startTime < 500) {
      //点击操作
      //......
    }
  }
}

双击(double tap)
和单击一样,双击事件也需要我们对手势进行量化分解。

    • 0
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    可以通过 echarts 的事件处理来实现树图单击缩放双击缩放的效果。具体实现如下: 1. 设置 echarts 的 option,将 `roam` 属性设置为 `'scale'`,表示支持缩放操作。 2. 通过 `chart.on` 方法监听 `click` 和 `dblclick` 事件。 3. 在 `click` 事件回调函数中,获取当前的缩放比例 `zoom`,如果缩放比例为 1,则返回,不做任何操作。 4. 在 `dblclick` 事件回调函数中,获取当前的缩放比例 `zoom`,如果缩放比例不为 1,则将缩放比例设置为 1,即恢复初始状态。 以下是示例代码: ```javascript // 设置 echarts 的 option var option = { roam: 'scale', // 设置支持缩放操作 // 其他配置项 }; // 初始化 echarts 实例 var chart = echarts.init(document.getElementById('chart')); // 设置 option chart.setOption(option); // 监听 click 和 dblclick 事件 chart.on('click', function (params) { // 获取当前缩放比例 var zoom = chart.getOption().dataZoom[0].zoom; // 如果缩放比例为 1,则返回,不做任何操作 if (zoom === 1) { return; } // 其他操作 }); chart.on('dblclick', function (params) { // 获取当前缩放比例 var zoom = chart.getOption().dataZoom[0].zoom; // 如果缩放比例不为 1,则将缩放比例设置为 1,即恢复初始状态 if (zoom !== 1) { chart.dispatchAction({ type: 'dataZoom', start: 0, end: 100, }); } }); ``` 以上代码中,`dispatchAction` 方法用于触发 echarts 的行为,这里用于将缩放比例设置为 1。

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值