76 lines
2.3 KiB
TypeScript
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 {};
|