Browse Source

fix: bug修复

TIANYONG 1 year ago
parent
commit
e171a2bd01

+ 2 - 2
src/helpers/formateMusic.ts

@@ -933,8 +933,8 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				});
 				if (_firstMeasureRealValue < vRealValue) {
 					// console.log(_firstMeasureRealValue, vRealValue)
-					// 如果是弱起,将整个小节的时值减去音符的时值,就是缺省的时值
-					difftime = measureLength - noteLength;
+					// 如果是弱起,将整个小节的时值减去该小节所有音符相加的时值,就是缺省的时值
+					difftime = measureLength - _firstMeasureRealValue * formatBeatUnit(beatUnit) * (60 / beatSpeed);
 				}
 				if (difftime > 0) {
 					fixtime += difftime;

+ 3 - 0
src/helpers/metronome.ts

@@ -169,11 +169,14 @@ class Metronome {
 	loadAudio1 = () => {
 		return new Howl({
 			src: tockAndTick.tick,
+			// 如果是ios手机,需要强制使用audio,不然部分系统版本第一次播放没有声音
+			html5: browserInfo.ios,
 		});
 	};
 	loadAudio2 = () => {
 		return new Howl({
 			src: tockAndTick.tock,
+			html5: browserInfo.ios,
 		});
 	};
 	getStep(time: number) {

+ 14 - 0
src/page-instrument/view-detail/index.tsx

@@ -28,6 +28,7 @@ import ViewFigner from "../view-figner";
 import { recalculateNoteData } from "/src/view/selection";
 import ToggleMusicSheet from "/src/view/plugins/toggleMusicSheet";
 import { setCustomGradual, setCustomNoteRealValue } from "/src/helpers/customMusicScore"
+import { usePageVisibility } from "@vant/use";
 
 /**
  * 特殊教材分类id
@@ -254,6 +255,19 @@ export default defineComponent({
         );
       }
     );
+    const pageVisible = usePageVisibility();
+    watch(
+      () => pageVisible.value,
+      (val) => {
+        if (val === "hidden") {
+          // 如果是播放状态,需要暂停播放
+          // console.log("页面隐藏停止播放");
+          if (state.playState === "play") {
+            togglePlay("paused");
+          }
+        }
+      }
+    );    
     onMounted(() => {
       window.addEventListener("resize", resetMusicScore);
     });

+ 5 - 2
src/state.ts

@@ -273,7 +273,7 @@ const state = reactive({
   extConfigJson: {} as any,
   /** 扩展样式字段 */
   extStyleConfigJson: {} as any,
-  /** 是否开启节拍器 */
+  /** 是否开启节拍器(mp3节拍器) */
   isOpenMetronome: false,
   /** 是否显示指法 */
   isShowFingering: false,
@@ -965,9 +965,12 @@ const setState = (data: any, index: number) => {
       console.error("解析扩展字段错误:", error);
     }
   }
+  state.gradualTimes = state.extConfigJson.gradualTimes;
+  state.repeatedBeats = state.extConfigJson.repeatedBeats || 0;
   // 曲子包含节拍器,就不开启节拍器
   state.needTick = data.isUseSystemBeat && data.isPlayBeat ? true : false;
-  state.isOpenMetronome = data.isUseSystemBeat ? false : true;
+  // state.isOpenMetronome = data.isUseSystemBeat ? false : true;
+  state.isOpenMetronome = data.isPlayBeat && !data.isUseSystemBeat ? true : false
   state.isShowFingering = data.isShowFingering ? true : false;
   state.music = data.music;
   state.accompany = data.accompany;

+ 5 - 0
src/view/tick/index.tsx

@@ -4,7 +4,9 @@ import { Howl } from "howler";
 import { Popup } from "vant";
 import styles from "./index.module.less";
 import state from "/src/state";
+import { browser } from "/src/utils/index";
 
+const browserInfo = browser();
 const tickData = reactive({
 	list: [] as number[],
 	len: 0,
@@ -49,9 +51,12 @@ export const handleStartTick = async () => {
 	if (tickData.state !== "ok") {
 		tickData.source1 = new Howl({
 			src: tockAndTick.tick,
+			// 如果是ios手机,需要强制使用audio,不然部分系统版本第一次播放没有声音
+			html5: browserInfo.ios,
 		});
 		tickData.source2 = new Howl({
 			src: tockAndTick.tock,
+			html5: browserInfo.ios,
 		});
 		tickData.state = "ok";
 	}

+ 2 - 2
vite.config.ts

@@ -68,8 +68,8 @@ export default defineConfig({
 				// target: "https://test.lexiaoya.cn",
 				// target: "https://dev.kt.colexiu.com",
 				// target: "https://dev.resource.colexiu.com", // 内容平台开发环境
-				// target: "https://test.resource.colexiu.com",
-				target: "https://test.kt.colexiu.com",
+				target: "https://test.resource.colexiu.com",
+				// target: "https://test.kt.colexiu.com",
 				changeOrigin: true,
 				rewrite: (path) => path.replace(/^\/instrument/, ""),
 			},