@any-touch/doubletap

中文文档
2.2.0发布于 2022/05/24MITTypeScriptESM + CJS近 30 天下载 3539

any-touch的识别器, 用来识别双击手势, 是Tap识别器的一个特例

中文使用文档
文档目录4 节
  1. 安装
  2. 快速开始
  3. 源码解析
  4. N击

@any-touch/doubletap

双击识别器. 基于@any-touch/tap实现, 是tap的一个特例.

安装

npm i -S @any-touch/doubletap

快速开始

// 只加载tap识别器(拖拽)
import Core from '@any-touch/core';
import doubletap from '@any-touch/doubletap';
const at = new Core(el);
at.use(doubletap)

// 双击
at.on('doubletap', (event) => {
    console.log(event) // 包含点击位置信息
});

源码解析

因为是基于@any-touch/tap实现的, 所以代码不多, 只是使用beforeEach拦截器.

export default function (at: Core) {
    at.use(tap, { name: 'doubletap', tapTimes: 2 });
    const doubleTapContext = at.get('doubletap')
    let timeID: number;
    at.beforeEach((type, next) => {
        if ('tap' === type) {
            clearTimeout(timeID);
            timeID = setTimeout(() => {
                if ([STATE.POSSIBLE, STATE.FAILED].includes(doubleTapContext.state)) {
                    next();
                }
            }, 300);
        } else {
            next();
        }
    });
    return doubleTapContext;
}

这里只需要多理解一个概念就是STATE(识别器的状态).

名称解释
POSSIBLE待识别
RECOGNIZED已识别
FAILED识别失败

识别流程如下, 每次点击屏幕, STATE是"POSSIBLE状态, 识别成功后状态变成"RECOGNIZED", 识别失败变成"FAILED".

特别解释下"FAILED"的发生情况,用doubletap识别器举例, 当2次点击间隔时间过长, doubletap的状态就会变成"FAILED", 当第三次点击的时候状态又变回"POSSIBLE".

完整源码

N击

如果看懂了双击的逻辑, 那么稍作修改就可以实现"3击".

export default function (at: Core) {
    // ⭐只有这一行的tapTimes改成了3
    at.use(tap, { name: 'doubletap', tapTimes: 3 });

    // 未改动
    const doubleTapContext = at.get('doubletap')
    let timeID: number;
    at.beforeEach((type, next) => {
        if ('tap' === type) {
            clearTimeout(timeID);
            timeID = setTimeout(() => {
                if ([STATE.POSSIBLE, STATE.FAILED].includes(doubleTapContext.state)) {
                    next();
                }
            }, 300);
        } else {
            next();
        }
    });
    return doubleTapContext;
}

版本与发布记录

@any-touch/doubletap 共发布 11 个版本,首次发布于 2022/01/06;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.2.0latest2022/05/244 年前
2.1.32022/05/244 年前
2.1.22022/04/284 年前
2.1.12022/04/084 年前
2.1.02022/04/024 年前
2.0.32022/03/304 年前

其他发布通道:next → 2.0.3-alpha.0。

关于 @any-touch/doubletap 的常见问题

@any-touch/doubletap 是什么?

any-touch的识别器, 用来识别双击手势, 是Tap识别器的一个特例

如何安装 @any-touch/doubletap?

在项目目录运行 npm install @any-touch/doubletap,或使用 pnpm add / yarn add / bun add。

@any-touch/doubletap 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@any-touch/doubletap 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@any-touch/doubletap 可以商用吗?

@any-touch/doubletap 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@any-touch/doubletap 的下载量有多少?

根据 npm 官方下载统计,@any-touch/doubletap 在 2026/10/06 – 2026/11/04 这 30 天内被下载 3,539 次,日均约 118 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@any-touch/doubletap 还在维护吗?

最新版本 2.2.0 发布于 2022/05/24(4 年前);至今共发布 11 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/01/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。