2025-07-14 10:54:06 +08:00

76 lines
2.3 KiB
TypeScript

/**
* 流程如下:
* 开始
* |
* <是否end阶段> - 否 - 结束
* |
* 关闭定时器c1和c2
* |
* 清除等待状态
* |
* 是
* |
* 重置状态为"可能是"
* |
* <是否满足单击条件> - 否 - 结束
* |
* 是
* |
* <是否正确连击:是否上次点击信息为空 或 与上次点击的位移/时间是否满足约束> - 否 - 点击次数=1 - 继续(<是否到达点击数要求>)
* |
* 是
* |
* 点击次数+1
* |
* <是否到达点击数要求> - 否 - 设置定时器c1(t1毫秒后状态设置为"失败") - 结束
* |
* 是
* |
* <是否需要其他手势失败> - 否 - 触发事件, 状态设置为"已识别",重置(点击次数,位置) - 结束
* |
* 是
* |
* 进入等待状态
* |
* <设置定时器c2(t1毫秒后检查"需要失败"的手势是否是"失败"状态, 重置(点击次数,位置, 等待状态)> - 否 - 设置状态为"失败" - 结束
* |
* 是
* |
* 触发, 状态设置为"已识别", 重置(点击次数,位置)
* |
* 结束
*/
import AnyTouch from 'any-touch';
import type { PluginContext, AnyTouchEvent } from '@any-touch/shared';
declare const DEFAULT_OPTIONS: {
name: string;
pointLength: number;
tapTimes: number;
waitNextTapTime: number;
maxDistance: number;
maxDistanceFromPrevTap: number;
maxPressTime: number;
};
/**
* 实例
*/
export declare type TapContext = PluginContext & typeof DEFAULT_OPTIONS;
/**
* 扩展插件映射
*/
declare module '@any-touch/core' {
interface PluginContextMap {
tap: TapContext;
}
interface EventMap {
tap: AnyTouchEvent;
}
}
/**
* "单击"识别器
* @param at AnyTouch实例
* @param options 识别器选项
*/
export default function (at: AnyTouch, options?: Partial<typeof DEFAULT_OPTIONS>): TapContext;
export {};