live试玩round1+round2修复: 引擎gesture新增tapcancel(immediateTap误判定回滚,默认关闭零行为变化)+ rhythm判定账簿/超时Miss复活/菜单1s去抖/正片下滑永不弹菜单 + space判定冷静期800ms/暂停恢复3颗缓冲/回大厅leaving收尾/hit_last在播标记 + storyline intro满播不掐/抉择25s兜底 + simon免费重听两层账 + escape教学链自动接播/90s高频零提示 + rpg擦伤零误报/tap不丢 + guide.test适配去抖期(语义不变)+ 文档同步(13号§9-§19/web-engine-api/README)。回归:storyline82/escape140/simon132/rhythm141/space155/rpg188/guide122共921断言全绿

This commit is contained in:
xsl
2026-09-01 22:00:00 +08:00
parent 624fec8a23
commit 4e9970e227
22 changed files with 3161 additions and 401 deletions
+9 -2
View File
@@ -170,8 +170,15 @@ export class WebAudioEngine {
resolve();
});
};
// 同时监听 touchend 与 click;unlock() 必须在手势回调里同步发起
overlay.addEventListener('touchend', onTap);
// 同时监听 touchend 与 click;unlock() 必须在手势回调里同步发起。
// 触摸路径必须 preventDefault(需 passive:false 才有效):否则浏览器
// 会为这次触摸补发合成 mousedown/mouseup/click。遮罩移除后合成事件
// 落到手势 root 上,gesture.js 的鼠标回退通道会把它误判成一次 tap——
// "解锁单击"误杀开场旁白的根因(gesture.js 另有 document 级 700ms
// 合成鼠标守卫兜底,双保险)。
overlay.addEventListener('touchstart', (e) => e.preventDefault(), { passive: false });
overlay.addEventListener('touchend', (e) => { e.preventDefault(); onTap(); }, { passive: false });
// 桌面鼠标 / 辅助技术触发的 click 不受影响,照常解锁
overlay.addEventListener('click', onTap);
});
}