liushengqiang 1 سال پیش
والد
کامیت
c58e73bfd3
1فایلهای تغییر یافته به همراه39 افزوده شده و 12 حذف شده
  1. 39 12
      src/pc/home/index.tsx

+ 39 - 12
src/pc/home/index.tsx

@@ -322,13 +322,12 @@ export default defineComponent({
 				if (popup.selectMearesShow && data.selectMeasures.startNote && data.selectMeasures.endNote) {
 					const end =
 						totalBeats *
-						(data.selectMeasures.endNote.milliseconds /
-							(abcData.visualObj.getTotalTime() * 1000)) - 0.1;
+							(data.selectMeasures.endNote.milliseconds / (abcData.visualObj.getTotalTime() * 1000)) -
+						0.1;
 					// console.log(beatNumber, start, end, progress);
 					if (beatNumber >= end) {
 						const progress =
-							data.selectMeasures.startNote.milliseconds /
-							(abcData.visualObj.getTotalTime() * 1000);
+							data.selectMeasures.startNote.milliseconds / (abcData.visualObj.getTotalTime() * 1000);
 						(abcData.synthControl as any).seek(progress);
 						return;
 					}
@@ -420,14 +419,12 @@ export default defineComponent({
 					if (!(abcData.synthControl as any).isLoaded) {
 						(abcData.synthControl as any).runWhenReady(() => {
 							const progress =
-								data.selectMeasures.startNote.milliseconds /
-								(abcData.visualObj.getTotalTime() * 1000);
+								data.selectMeasures.startNote.milliseconds / (abcData.visualObj.getTotalTime() * 1000);
 							(abcData.synthControl as any).seek(progress);
 						});
 					} else {
 						const progress =
-							data.selectMeasures.startNote.milliseconds /
-							(abcData.visualObj.getTotalTime() * 1000);
+							data.selectMeasures.startNote.milliseconds / (abcData.visualObj.getTotalTime() * 1000);
 						(abcData.synthControl as any).seek(progress);
 					}
 				}
@@ -448,6 +445,35 @@ export default defineComponent({
 			} else {
 				abcData.synthControl.restart();
 				nextTick(() => {
+					if (popup.selectMearesShow) {
+						if (
+							data.selectMeasures.start > data.selectMeasures.end ||
+							!data.selectMeasures.startNote ||
+							!data.selectMeasures.endNote
+						) {
+							data.selectMeasures.start = 0;
+							data.selectMeasures.end = 0;
+							data.selectMeasures.startNote = null;
+							data.selectMeasures.endNote = null;
+							message.warning("请输入正确的小节范围");
+							data.selectMeasures.state = false;
+							nextTick(() => {
+								data.selectMeasures.state = true;
+							});
+							return;
+						}
+						if (!(abcData.synthControl as any).isLoaded) {
+							(abcData.synthControl as any).runWhenReady(() => {
+								const progress =
+									data.selectMeasures.startNote.milliseconds / (abcData.visualObj.getTotalTime() * 1000);
+								(abcData.synthControl as any).seek(progress);
+							});
+						} else {
+							const progress =
+								data.selectMeasures.startNote.milliseconds / (abcData.visualObj.getTotalTime() * 1000);
+							(abcData.synthControl as any).seek(progress);
+						}
+					}
 					if (!data.playState) {
 						abcData.synthControl.play();
 					}
@@ -1562,6 +1588,9 @@ export default defineComponent({
 		/** 设置选段小节 */
 		const handleSetSelectMeares = (index: number | null, type: "start" | "end") => {
 			console.log("🚀 ~ index:", index);
+			if (data.playState) {
+				togglePlay("pause");
+			}
 			if (type === "start") {
 				let note = index ? useIndexGetNote(`${index - 1}.0`) : null;
 				note = data.times.find((_note: any) => _note.startChar === note.startChar);
@@ -1577,10 +1606,8 @@ export default defineComponent({
 					data.selectMeasures.endNote = null;
 				}
 			} else {
-				let note = index
-					? useIndexGetNote(`${index}.0`)
-					: null;
-					note = data.times.find((_note: any) => _note.startChar === note.startChar);
+				let note = index ? useIndexGetNote(`${index}.0`) : null;
+				note = data.times.find((_note: any) => _note.startChar === note.startChar);
 				// console.log("🚀 ~ note:", note);
 				data.selectMeasures.end = index ? index - 1 : 0;
 				data.selectMeasures.endNote = note;