diff --git a/src/renderer-lyric/components/core/Lyric.vue b/src/renderer-lyric/components/core/Lyric.vue index 662af1ba..84b1f28d 100644 --- a/src/renderer-lyric/components/core/Lyric.vue +++ b/src/renderer-lyric/components/core/Lyric.vue @@ -14,6 +14,7 @@ import { scrollTo } from '@renderer/utils' import Lyric from '@renderer/utils/lyric-font-player' let cancelScrollFn = null +let delayScrollTimeout export default { props: { @@ -126,7 +127,8 @@ export default { if (n < 0) return if (n == 0 && this.isSetedLines) return this.isSetedLines = false if (o == null || n - o != 1) return this.handleScrollLrc() - setTimeout(() => { + delayScrollTimeout = setTimeout(() => { + delayScrollTimeout = null this.handleScrollLrc(600) }, 600) }, @@ -251,6 +253,10 @@ export default { this.lyricEvent.msDownY = y this.lyricEvent.msDownScrollY = this.$refs.dom_lyric.scrollTop } else { + if (delayScrollTimeout) { + clearTimeout(delayScrollTimeout) + delayScrollTimeout = null + } this.winEvent.isMsDown = true this.winEvent.msDownX = x this.winEvent.msDownY = y diff --git a/src/renderer/utils/compositions/useLyric.js b/src/renderer/utils/compositions/useLyric.js index bad6dc32..eb728cfa 100644 --- a/src/renderer/utils/compositions/useLyric.js +++ b/src/renderer/utils/compositions/useLyric.js @@ -40,6 +40,10 @@ export default ({ isPlay, lyric }) => { } const handleLyricMouseDown = event => { // console.log(event) + if (delayScrollTimeout) { + clearTimeout(delayScrollTimeout) + delayScrollTimeout = null + } isMsDown.value = true msDownY = event.clientY msDownScrollY = dom_lyric.value.scrollTop @@ -103,12 +107,14 @@ export default ({ isPlay, lyric }) => { } } + let delayScrollTimeout const scrollLine = (line, oldLine) => { if (line < 0) return if (line == 0 && isSetedLines) return isSetedLines = false if (oldLine == null || line - oldLine != 1) return handleScrollLrc() - setTimeout(() => { + delayScrollTimeout = setTimeout(() => { + delayScrollTimeout = null handleScrollLrc(600) }, 600) }