クリック時にポインターロックを要求する CanvasElement があり、onMouseMove
リスナーを使用してmotionXとmotionYを関数に繰り返し渡します(一人称コントロールをテストしています)。
初めて(ページの読み込み直後)は正常に動作しますが、エスケープを押してキャンバスを再度クリックすると、カーソルは正常にロックされますが、リスナーMouseEvent
に渡すは生成されません。onMouseMove
Esc キーを押してマウスをドキュメントの外 (マークアップで管理されていない場所) に移動し、ドキュメント内に戻してキャンバスをクリックすると、すべてが再び完全に機能します。
この奇妙な動作の原因は何ですか?
_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();
}
});
説明されているすべての動作は、これらのコード行に含まれています。