dart - onMouseMove监听器仅在光标离开并重新进入文档后才开始接收事件

标签 dart dart-html onmousemove

我有CanvasElement,它要求在单击时锁定指针,然后使用onMouseMove侦听器(将在测试第一人称控件)反复将MovementX和MovementY传递给函数。

第一次(在页面加载后立即)运行良好,但是如果我按Escape键并再次单击 Canvas ,它将成功锁定光标,但不会生成MouseEvent传递给onMouseMove侦听器。

如果我按Escape键并将鼠标移到文档外部(不受标记限制的任何地方),请将其移回到文档中并单击 Canvas ,一切将再次正常运行。

有什么想法导致这种奇怪的行为吗?

_canvas.onMouseMove.listen((MouseEvent e) {
  if (document.pointerLockElement == _canvas) {
    print(e.movement); // debug print
    orientateCamera(e.movement);
  }
});

_canvas.onClick.listen((e) {
  if (document.pointerLockElement == null) {
    _canvas.requestPointerLock();
  }
});

所有描述的行为都包含在这些代码行中。

最佳答案

我不知道element.requestPointerLock()是做什么的,但是
MDN - Element.requestPointerLock指出您应该听pointerlockchangepointerlockerror来查看请求是否成功。您似乎也没有使用document.exitPointerLock()

MDN Pointer Lock API似乎是一个不错的介绍。

关于dart - onMouseMove监听器仅在光标离开并重新进入文档后才开始接收事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22066061/

相关文章:

firebase - 如何在 flutter 朔迷离的电子商务应用程序中添加购物车页面?

asp.net-core - flutter websocket连接问题

radio-button - Dart 上的单选按钮

websocket - Angular2 dart ngFor 使用 WebSocket 时不更新 View

firebase - 尝试将文件上传到 firebase 云存储时,TypeError : appImpl. 存储不是函数

dart - 如何使用 dart 将多个对象打印到 console.log ?

WPF MouseMove 事件轮询

matlab - MATLAB 中 imfreehand 工具的采样率?

arrays - Dart :无法将新列表添加到2D列表中