TIANYONG vor 10 Monaten
Ursprung
Commit
17e37000f8

+ 23 - 0
src/helpers/customMusicScore.ts

@@ -618,6 +618,10 @@ export const resetFormate = () => {
 	if (!state.isCombineRender && state.isSingleLine) {
 		transSinglePage();
 	}
+	// 多行谱,拍号可能被遮挡,需要移动谱面的位置
+	if (!state.isSingleLine) {
+		transMultiPosition();
+	}
 	// setTimeout(() => this.resetGlobalText());
 };
 
@@ -644,6 +648,25 @@ const transSinglePage = () => {
 			// document.getElementById('osmdSvgPage1').style.transform = `translateY(${needTransDistance}px)`
 		}
 	}
+	if (state.isSimplePage) {
+		const svgPage = document?.getElementById('osmdSvgPage1')?.getBoundingClientRect();
+		const staffLine = document?.querySelector('.staffline')?.getBoundingClientRect();
+		if (svgPage && staffLine) {
+			const needY = svgPage.height - (staffLine.y+staffLine.height) - 10;
+			// @ts-ignore
+			document.getElementById('osmdSvgPage1').style.transform = `translateY(${needY}px)`;
+		}
+	}
+}
+
+const transMultiPosition = () => {
+	const svgPage = document?.getElementById('osmdSvgPage1')?.getBoundingClientRect();
+	const staffLine = document?.querySelector('.staffline')?.getBoundingClientRect();
+	if (svgPage && staffLine && staffLine.y < svgPage.y) {
+		const needY = svgPage.y - staffLine.y + 5;
+		// @ts-ignore
+		document.querySelector('.staffline').style.transform = `translateY(${needY}px)`;
+	}
 }
 
 // 技巧文本

+ 1 - 1
src/helpers/formateMusic.ts

@@ -1022,7 +1022,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			activeVerticalMeasureList = [note.sourceMeasure?.verticalMeasureList?.[0]] || [];
 			// 某些情况下,合并显示的妙极客曲子,note.sourceMeasure?.verticalMeasureList可能为空数组
 			if (state.isCombineRender && state.isEvxml && note.sourceMeasure?.verticalMeasureList.length === 0) {
-				activeVerticalMeasureList = osmd.GraphicSheet.MeasureList.find((item: any) => item[0].MeasureNumber === note.sourceMeasure.MeasureNumberXML) || [];
+				activeVerticalMeasureList = osmd.GraphicSheet.MeasureList.find((item: any) => item[0]?.MeasureNumber === note.sourceMeasure.MeasureNumberXML) || [];
 			}
 			let currenrtVfVoices = activeVerticalMeasureList[0]?.vfVoices['1'] ? activeVerticalMeasureList[0]?.vfVoices['1'] : activeVerticalMeasureList[0]?.vfVoices['2'] ? activeVerticalMeasureList[0]?.vfVoices['2'] : null;
 			/**

+ 1 - 1
src/page-instrument/simple-detail/index.module.less

@@ -20,7 +20,7 @@ body {
     overflow: hidden;
     --header-height: 62px;
     // background: var(--container-background);
-    background: brown;
+    background: transparent;
     position: relative;
     .mask{
         position: absolute;

+ 4 - 2
src/state.ts

@@ -1273,9 +1273,11 @@ let offsetTop = 0;
  * @returns void
  */
 export const scrollViewNote = () => {
-  const cursorElement = document.getElementById("cursorImg-0")!;
+  // const cursorElement = document.getElementById("cursorImg-0")!;
+  const cursorElement: any = document.querySelector(`.noteIndex_${state.activeNoteIndex}`)!;
   const musicAndSelection = document.getElementById(state.scrollContainer)!;
-  if (!cursorElement || !musicAndSelection || offsetTop === cursorElement.offsetTop) return;
+  // console.log('滑动',cursorElement.offsetTop,offsetTop, cursorElement, )
+  if (!cursorElement || !musicAndSelection || offsetTop === cursorElement.offsetTop || Math.abs(offsetTop - cursorElement.offsetTop) < 30) return;
   offsetTop = cursorElement.offsetTop;
   if (offsetTop > 50) {
     musicAndSelection.scrollTo({

+ 2 - 1
src/view/tick/index.tsx

@@ -111,7 +111,8 @@ export const handleStartTick = async () => {
 	tickData.show = true;
 	tickData.tickEnd = false;
 	tickData.index = 0;
-	tickData.beatLengthInMilliseconds = (60 / state.speed) * 1000;
+	// tickData.beatLengthInMilliseconds = (60 / state.speed) * 1000;
+	tickData.beatLengthInMilliseconds = (state.times[0].xmlMp3BeatFixTime * 1000) / tickData.len || (60 / state.speed) * 1000;
 	for(let i = 0; i <= useLen.value; i++){
 		// 提前结束, 直接放回false
 		if (tickData.tickEnd) return false;