Przeglądaj źródła

Merge branch 'feature-tianyong-newVersion' into ktyq-test-new

TIANYONG 1 rok temu
rodzic
commit
458bf99560

+ 5 - 0
src/helpers/communication.ts

@@ -506,6 +506,11 @@ export const api_finishDelayCheck = (callback: any) => {
 	listenerMessage("finishDelayCheck", callback);
 };
 
+/** 监听延迟检测成功的回调 */
+export const api_remove_finishDelayCheck = (callback: any) => {
+	removeListenerMessage("finishDelayCheck", callback);
+};
+
 /** 监听APP播放进度 */
 export const simple_playProgress = (callback: any) => {
 	listenerMessage("api_playProgress", callback);

+ 4 - 1
src/page-instrument/evaluat-model/index.tsx

@@ -10,7 +10,7 @@ import { getNoteByMeasuresSlursStart } from "/src/helpers/formateMusic";
 import { Icon, Popup, showToast, closeToast, showLoadingToast } from "vant";
 import EvaluatResult from "./evaluat-result";
 import EvaluatAudio from "./evaluat-audio";
-import { api_getDeviceDelay, api_openAdjustRecording, api_proxyServiceMessage, api_videoUpdate, getEarphone, api_back, api_startDelayCheck, api_cancelDelayCheck, api_closeDelayCheck, api_finishDelayCheck, api_retryEvaluating } from "/src/helpers/communication";
+import { api_getDeviceDelay, api_openAdjustRecording, api_proxyServiceMessage, api_videoUpdate, getEarphone, api_back, api_startDelayCheck, api_cancelDelayCheck, api_closeDelayCheck, api_finishDelayCheck, api_retryEvaluating, api_remove_finishDelayCheck } from "/src/helpers/communication";
 import EvaluatShare from "./evaluat-share";
 import { Vue3Lottie } from "vue3-lottie";
 import startData from "./data/start.json";
@@ -126,6 +126,8 @@ export default defineComponent({
 
     /** 校验耳机状态 */
     const checkEarphoneStatus = async (type?: string) => {
+      clearTimeout(checkErjiTimer);
+      checkErjiTimer = null;
       if (type !== "start") {
         // const erji = await checkUseEarphone();
         const res = await getEarphone();
@@ -445,6 +447,7 @@ export default defineComponent({
     });
     
     onUnmounted(() => {
+      api_remove_finishDelayCheck(handleFinishDelayCheck);
 			clearTimeout(checkErjiTimer);
       checkErjiTimer = null;
 		});

+ 5 - 2
src/page-instrument/view-detail/smoothAnimation/index.ts

@@ -74,7 +74,8 @@ export function initSmoothAnimation() {
       }
       return path
    }, 0)
-   smoothAnimationState.aveSpeed = (canvasDomPath / (state.times[state.times.length - 1].time - state.times[0].time) / 1000) * 16.67
+   // 20 是屏幕多长时间刷新一次的时间,本来是16.67的,但是有些手机帧率比较低,所以这里给小一点的值,宁愿慢一点偏屏幕左边一点
+   smoothAnimationState.aveSpeed = (canvasDomPath / (state.times[state.times.length - 1].time - state.times[0].time) / 1000) * 20
    // 当前屏幕的宽度
    calcClientWidth()
    window.addEventListener("resize", calcClientWidth)
@@ -129,7 +130,9 @@ export function moveSmoothAnimationByPlayTime(time?: number) {
       (nextIndex > state.times.length - 1 ? state.times[state.activeNoteIndex]?.endtime : state.times[nextIndex].time) -
       state.times[state.activeNoteIndex]?.time
    // 当前时值在该区间的占比
-   const playProgress = (currentTime - state.times[state.activeNoteIndex]?.time) / noteDuration
+   let playProgress = (currentTime - state.times[state.activeNoteIndex]?.time) / noteDuration
+   // 华为手机 fixtime 有个默认0.08的值,所以进度可能为负数 ,这里兼容一下
+   playProgress < 0 && (playProgress = 0)
    moveSmoothAnimation(playProgress, state.activeNoteIndex)
 }
 

+ 15 - 0
src/state.ts

@@ -229,6 +229,11 @@ export const musicalInstrumentCodeInfo = [
     id: 34
   },
   {
+    name: '陶笛',
+    code: 'Alto Ocarina',
+    id: 34
+  },
+  {
     name: '葫芦丝',
     code: 'Woodwind',
     id: 35
@@ -254,6 +259,11 @@ export const musicalInstrumentCodeInfo = [
     id: 37
   },
   {
+    name: '德式竖笛',
+    code: 'German Recorder',
+    id: 37
+  },
+  {
     name: '英式竖笛',
     code: 'Baroque Recorder',
     id: 38
@@ -263,6 +273,11 @@ export const musicalInstrumentCodeInfo = [
     code: 'Whistling',
     id: 39
   },
+  {
+    name: '高音陶笛',
+    code: 'Soprano Ocarina',
+    id: 39
+  },
 ]
 
 const state = reactive({

+ 4 - 1
src/view/evaluating/index.tsx

@@ -626,7 +626,10 @@ const handleAccompanyError = (res?: IPostMessage) => {
         }
         // 关闭节拍器
         closeTick();
-        api_closeDelayCheck({});
+        // socketerrror,才发送关闭延迟检测的消息
+        if (type === "socketError") {
+          api_closeDelayCheck({});
+        }
         evaluatingData.socketErrorStatus = 0;
         evaluatingData.socketErrorPop = type === "socketError" ? true : false;
         evaluatingData.isErrorState = true;