浏览代码

feat: 评测系统节拍器

TIANYONG 1 年之前
父节点
当前提交
d4701ea63f
共有 2 个文件被更改,包括 14 次插入13 次删除
  1. 5 2
      src/pages/detail/runtime.ts
  2. 9 11
      src/subpages/colexiu/buttons/evaluating.tsx

+ 5 - 2
src/pages/detail/runtime.ts

@@ -31,7 +31,7 @@ import { postMessage, listenerMessage, promisefiyPostMessage } from '/src/helper
 
 
 import EventEmitter from 'eventemitter3'
 import EventEmitter from 'eventemitter3'
 import { useClientType, useOriginSearch } from '/src/subpages/colexiu/uses'
 import { useClientType, useOriginSearch } from '/src/subpages/colexiu/uses'
-import { evaluatPlayerStop } from '/src/subpages/colexiu/buttons/evaluating'
+import { evaluatPlayerStop, setPlayer } from '/src/subpages/colexiu/buttons/evaluating'
 import { unitTestData } from '/src/subpages/colexiu/unitTest'
 import { unitTestData } from '/src/subpages/colexiu/unitTest'
 import { modelType } from '/src/subpages/colexiu/buttons'
 import { modelType } from '/src/subpages/colexiu/buttons'
 import { metronomeData } from '/src/helpers/metronome'
 import { metronomeData } from '/src/helpers/metronome'
@@ -533,7 +533,10 @@ export const resetPlayStatus = async (notStop?: boolean) => {
 
 
 export const play = async () => {
 export const play = async () => {
   // 评测是app播放,非h5播放
   // 评测是app播放,非h5播放
-  if (modelType.value === 'evaluation') return
+  if (modelType.value === 'evaluation') {
+    setPlayer()
+    return
+  }
   if (state.isFirstPlay) {
   if (state.isFirstPlay) {
     resetPlayStatus()
     resetPlayStatus()
     detailState.fixedKey = 0
     detailState.fixedKey = 0

+ 9 - 11
src/subpages/colexiu/buttons/evaluating.tsx

@@ -548,7 +548,7 @@ const startPlay = () => {
   RuntimeUtils.setPlayState()
   RuntimeUtils.setPlayState()
 }
 }
 
 
-const setPlayer = async () => {
+export const setPlayer = async () => {
   // 连接中,禁止重复连接
   // 连接中,禁止重复连接
   if (connentLoading.value) return
   if (connentLoading.value) return
   runtime.clickTime = new Date().getTime()
   runtime.clickTime = new Date().getTime()
@@ -577,10 +577,7 @@ const setPlayer = async () => {
     runtime.evaluatingStatus = false
     runtime.evaluatingStatus = false
     Toast.clear()
     Toast.clear()
   }
   }
-  // midi音频播放不需要再次调用此方法,而是通过监听tickEnd回调事件调用
-  if (!detailState.isAppPlay && !detailState.needTick) {
-    evaluatStart()
-  }
+  evaluatStart()
 }
 }
 
 
 const togglePlay = async () => {
 const togglePlay = async () => {
@@ -592,10 +589,6 @@ const togglePlay = async () => {
   if (evaluating.value) {
   if (evaluating.value) {
     stopPlay()
     stopPlay()
   } else {
   } else {
-    // 评测模式,如果有系统节拍器,需要先播放系统节拍器
-    if (detailState.needTick) {
-      await RuntimeUtils.setEvaluatTick()
-    }
     setPlayer()
     setPlayer()
   }
   }
 }
 }
@@ -989,8 +982,13 @@ export default defineComponent({
                   'transform': detailState.isSpecialShapedScreen ? `translateX(${detailState.notchHeight / 4}px)`  : '',
                   'transform': detailState.isSpecialShapedScreen ? `translateX(${detailState.notchHeight / 4}px)`  : '',
                 }}
                 }}
                 class={[styles.evaluatStartBtn]}
                 class={[styles.evaluatStartBtn]}
-                onClick={() => {
-                  setPlayer()
+                onClick={async () => {
+                  // 评测模式,如果有系统节拍器,需要先播放系统节拍器
+                  if (detailState.needTick) {
+                    await RuntimeUtils.setEvaluatTick()
+                  } else {
+                    setPlayer()
+                  }
                 }}
                 }}
               ></div>
               ></div>
             )}
             )}