From dee16f694369e26c007b29a4ff86733adc97e244 Mon Sep 17 00:00:00 2001 From: lyswhut Date: Fri, 1 Apr 2022 14:28:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=92=AD=E6=94=BE=E8=AF=A6?= =?UTF-8?q?=E6=83=85=E9=A1=B5=E7=9A=84=E9=BC=A0=E6=A0=87=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/PlayDetail/autoHideMounse.js | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/renderer/components/core/PlayDetail/autoHideMounse.js b/src/renderer/components/core/PlayDetail/autoHideMounse.js index e16462bc..649615dd 100644 --- a/src/renderer/components/core/PlayDetail/autoHideMounse.js +++ b/src/renderer/components/core/PlayDetail/autoHideMounse.js @@ -11,20 +11,26 @@ const isControl = dom => { if (dom.getAttribute('aria-label') || dom.tagName == 'BUTTON') return true return isControl(dom.parentNode) } -const startTimeout = debounce(() => { - if (!isAutoHide || isMouseDown || !event) return - if (isControl(document.elementFromPoint(event.clientX, event.clientY))) return + +const lockPointer = () => { + if (!isAutoHide || isMouseDown) return + if (event && isControl(document.elementFromPoint(event.clientX, event.clientY))) return dom.requestPointerLock() isLockedPointer = true -}, 3000) +} +const unLockPointer = () => { + if (!isLockedPointer) return + document.exitPointerLock() + isLockedPointer = false +} + +const startTimeout = debounce(lockPointer, 3000) const handleMouseMove = (_event) => { event = _event startTimeout() - if (!isLockedPointer) return - document.exitPointerLock() - isLockedPointer = false + unLockPointer() } const handleMouseDown = () => { @@ -36,13 +42,13 @@ const handleMouseUp = () => { } export const registerAutoHideMounse = _dom => { - startTimeout() if (isAutoHide || !_dom) return isAutoHide = true _dom.addEventListener('mousemove', handleMouseMove) _dom.addEventListener('mousedown', handleMouseDown) _dom.addEventListener('mouseup', handleMouseUp) dom = _dom + startTimeout() } export const unregisterAutoHideMounse = dom => { @@ -52,4 +58,5 @@ export const unregisterAutoHideMounse = dom => { dom?.removeEventListener('mousemove', handleMouseMove) dom?.removeEventListener('mousedown', handleMouseDown) dom?.removeEventListener('mouseup', handleMouseUp) + unLockPointer() }