Skip to content

fix(preview): 修复鼠标与触摸混用导致 3D 缩放报错 - #298

Open
MOVIBALE wants to merge 1 commit into
mainfrom
MOVIBALE/fix/preview-pointer-lifecycle
Open

MOVIBALE wants to merge 1 commit into
mainfrom
MOVIBALE/fix/preview-pointer-lifecycle

Conversation

@MOVIBALE

Copy link
Copy Markdown
Collaborator

Summary

工单 LUM-202611-b87f6fc5 的 Cannot read properties of undefined (reading 'x') 来自 OrbitControls:尚未结束的鼠标拖动和新触摸被计为两根手指,但鼠标没有触摸坐标,移动时进入双指缩放后报错。

为锁定的 three-stdlib 2.36.1 加入 pnpm 补丁,统一 ESM/CommonJS 手势状态管理:同一手势只接受同类输入,忽略重复与未登记触点,捕获释放事件,销毁时清空触点;双指结束后剩余手指可继续旋转。保留现有 Drei、相机行为和滚轮缩放适配。

Validation

  • 真实依赖回归在修改前 5 项均失败,修改后全部通过;加上滚轮回归共 7 项通过。
  • 使用工单原始 segmented_86214e3c_d74a304b3a07.glb 在 Chrome 验证:原版重现与工单相同的 handleTouchMoveDolly 堆栈;补丁应用后,同样的鼠标按下→触摸移动序列不再报错,正常双指缩放和单指接续旋转均有效。
  • 用 pnpm 10.33.2 创建最小依赖安装,确认补丁自动应用;ESM/CommonJS 文件与已测试版本逐字节一致,随后 frozen-lockfile 离线安装通过。
  • python scripts/run_vitest.py run src/utils/__tests__/orbitPointerLifecycle.test.ts src/utils/__tests__/wheelZoom.test.ts:通过。
  • 前端构建、修改文件 ESLint、python scripts/run_smoke_tests.py、git diff --check:通过。

原始模型和浏览器验证材料仅在本地保留。

AI assistance

Models and tools: GPT-6 系列,具体变体未提供(via Codex)。

What each model helped with: 对照工单堆栈、复现混合输入、修复控件触点生命周期、编写真实依赖回归、验证原模型交互与补丁安装并撰写说明。

How the output was checked: Codex 实际运行 Validation 中的测试、构建、安装和浏览器输入,核对原版失败及修复后的相机变化和错误日志。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant