Skip to content

三段长按与连击

三段长按与释放 GIF

0.65 / 1.2 / 1.9 秒

进度环以离散段点亮,核心从 idle 到 charge 再到 press。松手只产生一次主提交,之后才根据达到的阶段启动自动 burst。

状态机

text
IDLE
  └─ down → HOLDING
       ├─ travel ≥ 12 px → CANCELLED(锁存)
       ├─ 0.65 s → STAGE 1
       ├─ 1.20 s → STAGE 2
       ├─ 1.90 s → STAGE 3
       └─ up → one coreAction(chargeRatio) → optional BURST

三档 burst

档位总持续节拍间隔用途
11.8 s300 ms轻量自动连击
23.0 s220 ms中段收益与热量
34.5 s160 ms高强度爆发

调度器如果短暂卡顿,最多补一次丢失节拍,不能在恢复时瞬间补齐十几次点击。这样浏览器标签页抖动或 ESP32 一次长刷新都不会制造经济漏洞。

所有权

Canvas 长按、模拟器 HOLD 按钮和键盘 Space/Enter 共用同一交易令牌模型。同一物理动作不能同时触发原生 click 与自定义 release;pendingHoldClick 用于消费浏览器随后生成的 click。

取消条件

  • 总位移达到 12 px。
  • pointercancel / lostpointercapture。
  • 切页、进入 ambient、发射、新启动/恢复出厂序列。
  • 第一次唤醒输入:整次 down–move–up 都被消费,不在抬手时重新成为长按。

视觉与经济解耦

按住时的环、核心压缩和阶段提示只是预览。真正的 chargeRatio 在 release 以 elapsed 重新计算并钳制到 0–1,避免漏帧导致 UI 看见第三档、逻辑只算第二档。