|
@@ -299,7 +299,6 @@ const state = reactive({
|
|
/** 声部ID */
|
|
/** 声部ID */
|
|
subjectId: 0 as number,
|
|
subjectId: 0 as number,
|
|
trackId: 0 as string | number,
|
|
trackId: 0 as string | number,
|
|
- isVip: false, // 是否会员
|
|
|
|
/** 分类ID */
|
|
/** 分类ID */
|
|
categoriesId: 0,
|
|
categoriesId: 0,
|
|
/** 分类名称 */
|
|
/** 分类名称 */
|
|
@@ -588,6 +587,7 @@ const state = reactive({
|
|
instrumentId: null,
|
|
instrumentId: null,
|
|
/** 是否是作业模式(包含练习和评测) */
|
|
/** 是否是作业模式(包含练习和评测) */
|
|
isHomeWork: false,
|
|
isHomeWork: false,
|
|
|
|
+ headTopHeight: 0,
|
|
});
|
|
});
|
|
const browserInfo = browser();
|
|
const browserInfo = browser();
|
|
let offset_duration = 0;
|
|
let offset_duration = 0;
|
|
@@ -1345,24 +1345,25 @@ let offsetTop = 0;
|
|
*/
|
|
*/
|
|
export const scrollViewNote = (resetTop?: boolean) => {
|
|
export const scrollViewNote = (resetTop?: boolean) => {
|
|
// const cursorElement = document.getElementById("cursorImg-0")!;
|
|
// const cursorElement = document.getElementById("cursorImg-0")!;
|
|
- const noteId = state.times[state.activeNoteIndex].id;
|
|
|
|
if (state.isSingleLine) {
|
|
if (state.isSingleLine) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- if (state.activeNoteIndex <= 1 || resetTop) {
|
|
|
|
- offsetTop = 0;
|
|
|
|
|
|
+ const noteId = state.times[state.activeNoteIndex].id;
|
|
|
|
+ if (!noteId) {
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
const domId = "vf" + noteId;
|
|
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)!;
|
|
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({
|
|
musicAndSelection.scrollTo({
|
|
- top: (offsetTop - 100) * state.musicZoom,
|
|
|
|
|
|
+ top: (offsetTop - state.headTopHeight - 30) * state.musicZoom,
|
|
behavior: "smooth",
|
|
behavior: "smooth",
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
@@ -2289,8 +2290,10 @@ export const handleGuide = async () => {
|
|
|
|
|
|
export const resetCursorPosition = () => {
|
|
export const resetCursorPosition = () => {
|
|
if (metronomeData.cursorMode === 1) {
|
|
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 currentDot = document.querySelector(`.noteIndex_${state.activeNoteIndex}`)
|
|
const noteId = state.times[state.activeNoteIndex].id;
|
|
const noteId = state.times[state.activeNoteIndex].id;
|
|
const domId = "vf" + noteId;
|
|
const domId = "vf" + noteId;
|
|
@@ -2301,8 +2304,10 @@ export const resetCursorPosition = () => {
|
|
}, 0);
|
|
}, 0);
|
|
}
|
|
}
|
|
} else {
|
|
} 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");
|
|
|
|
+ })
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|