TIANYONG 8 mēneši atpakaļ
vecāks
revīzija
cf2bfc3a03
1 mainītis faili ar 21 papildinājumiem un 15 dzēšanām
  1. 21 15
      src/state.ts

+ 21 - 15
src/state.ts

@@ -588,6 +588,7 @@ const state = reactive({
   instrumentId: null,
   /** 是否是作业模式(包含练习和评测) */
   isHomeWork: false,
+  headTopHeight: 0,
 });
 const browserInfo = browser();
 let offset_duration = 0;
@@ -1345,24 +1346,25 @@ let offsetTop = 0;
  */
 export const scrollViewNote = (resetTop?: boolean) => {
   // const cursorElement = document.getElementById("cursorImg-0")!;
-  const noteId = state.times[state.activeNoteIndex].id;
   if (state.isSingleLine) {
     return;
   }
-  if (state.activeNoteIndex <= 1 || resetTop) {
-    offsetTop = 0;
+  const noteId = state.times[state.activeNoteIndex].id;
+  if (!noteId) {
+    return;
   }
   const domId = "vf" + noteId;
-  const cursorElement: any = noteId ? document.querySelector(`[data-vf=${domId}]`)?.parentElement : document.getElementById('restDot')?.parentElement;
+  const cursorElement: any = document.querySelector(`[data-vf=${domId}]`)?.parentElement;
   const musicAndSelection = document.getElementById(state.scrollContainer)!;
-  // offsetTop = musicAndSelection.scrollTop || offsetTop;
-  const noteCenterOffsetTop = cursorElement ? cursorElement?.offsetTop + (cursorElement?.offsetHeight/2) : 0;
-  // console.log('滑动',offsetTop, noteCenterOffsetTop)
-  if (!cursorElement || !noteCenterOffsetTop || !musicAndSelection || offsetTop === noteCenterOffsetTop || Math.abs(offsetTop - noteCenterOffsetTop) < 30) return;
-  offsetTop = noteCenterOffsetTop;
-  if (offsetTop > 100) {
+  if (!state.headTopHeight) {
+    state.headTopHeight = document.querySelector('.headHeight')?.getBoundingClientRect()?.height || 100;
+  }
+  // console.log('滑动',cursorElement.offsetTop,offsetTop, cursorElement, )
+  if (!cursorElement || !musicAndSelection || offsetTop === cursorElement.offsetTop || Math.abs(offsetTop - cursorElement.offsetTop) < 30) return;
+  offsetTop = cursorElement.offsetTop;
+  if (offsetTop > (state.headTopHeight + 30)) {
     musicAndSelection.scrollTo({
-      top: (offsetTop - 100) * state.musicZoom,
+      top: (offsetTop - state.headTopHeight - 30) * state.musicZoom,
       behavior: "smooth",
     });
   } else {
@@ -2289,8 +2291,10 @@ export const handleGuide = async () => {
 
 export const resetCursorPosition = () => {
   if (metronomeData.cursorMode === 1) {
-    const currentActive = document.querySelector(`.dotActive`);
-    currentActive?.classList.remove('dotActive');
+    const currentActives: HTMLElement[] = Array.from(document.querySelectorAll(".dotActive"));
+    currentActives.forEach((currentActive) => {
+      currentActive?.classList.remove("dotActive");
+    })
     // const currentDot = document.querySelector(`.noteIndex_${state.activeNoteIndex}`)
     const noteId = state.times[state.activeNoteIndex].id;
     const domId = "vf" + noteId;
@@ -2301,8 +2305,10 @@ export const resetCursorPosition = () => {
       }, 0);
     }
   } else {
-    const currentActive = document.querySelector(`.dotActive`);
-    currentActive?.classList.remove('dotActive');
+    const currentActives: HTMLElement[] = Array.from(document.querySelectorAll(".dotActive"));
+    currentActives.forEach((currentActive) => {
+      currentActive?.classList.remove("dotActive");
+    })
   }
 }