Переглянути джерело

Merge branch 'gyt-feature-tianyong' into online

TIANYONG 1 рік тому
батько
коміт
e268dc2a9d

+ 3 - 0
colexiu.html

@@ -8,6 +8,9 @@
     <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" />
     <!-- <link rel="preconnect" href="https://fonts.loli.net"> -->
     <!-- <link href="https://fonts.loli.net/css2?family=Roboto:wght@700&display=swap" rel="stylesheet"> -->
+    <script>
+      this.globalThis || (this.globalThis = this)
+    </script>
     <script type="text/javascript">
       document.write(
         unescape(

+ 3 - 0
index.html

@@ -7,6 +7,9 @@
   <title>管乐团云教练</title>
   <meta name="description" content="管乐团APP,器乐学习的不二选择" />
   <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" />
+  <script>
+    this.globalThis || (this.globalThis = this)
+  </script>
   <script src="/helpers/lottie.min.js"></script>
   <link href="/vant.css" rel="stylesheet">
 

+ 3 - 0
music-sheet.html

@@ -8,6 +8,9 @@
     <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" />
     <!-- <link rel="preconnect" href="https://fonts.loli.net"> -->
     <!-- <link href="https://fonts.loli.net/css2?family=Roboto:wght@700&display=swap" rel="stylesheet"> -->
+    <script>
+      this.globalThis || (this.globalThis = this)
+    </script>
     <script type="text/javascript">
       document.write(
         unescape(

+ 3 - 0
orchestra.html

@@ -7,6 +7,9 @@
   <title>管乐团云教练</title>
   <meta name="description" content="管乐团APP,器乐学习的不二选择" />
   <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" />
+  <script>
+    this.globalThis || (this.globalThis = this)
+  </script>
   <script src="/helpers/lottie.min.js"></script>
   <link href="/vant.css" rel="stylesheet">
 

+ 7 - 0
src/helpers/utils.ts

@@ -188,3 +188,10 @@ export const getVoiceChinesName = (name: string | undefined) => {
   }
   return viewname ? name + (name !== viewname ? ' (' + viewname + ')' : '') : ''
 }
+
+
+// 判断是否被转译
+export const isEncoded = (uri: string) => {
+  uri = uri || '';
+  return uri !== decodeURI(uri);
+}

+ 1 - 1
src/subpages/colexiu-report/index.tsx

@@ -165,7 +165,7 @@ export default defineComponent({
             copySvg?.classList.add(colorsClass[errType])
             // stemEl?.classList.add(colorsClass.RIGHT)
             // @ts-ignore
-            osmd?.container.querySelector('svg')!.insertAdjacentElement('afterbegin', copySvg)
+            runtime.osmd?.container.querySelector('svg')!.insertAdjacentElement('afterbegin', copySvg)
             // svgEl?.parentElement?.appendChild(copySvg)
           }
         }, 300)

+ 12 - 2
src/subpages/colexiu/buttons/evaluating.tsx

@@ -26,6 +26,13 @@ import startingData from './data/starting.json'
 import { unitTestData } from '../unitTest'
 import iconEvaluatingStart from './icons/icon-evaluatingStart.png'
 
+/**
+ * 节拍器时长
+ * 评测模式时,应该传节拍器时长
+ * 阶段评测时,判断是否从第一小节开始,并且曲子本身含有节拍器,需要传节拍器时长,否则传0
+ */
+let actualBeatLength = 0
+
 let backtime = 0
 
 const initBehaviorId = '' + new Date().valueOf()
@@ -53,6 +60,8 @@ const formatPitch = (num?: number): number => {
 }
 let starTime = 0
 const formatTimes = () => {
+  const rate = runtime.speed / detailState.baseSpeed //1
+  actualBeatLength = Math.round(detailState.times[0].fixtime * 1000 / rate)
   const difftime = detailState.times?.[0]?.difftime || 0
   let ListenMode = false
   let dontEvaluatingMode = false
@@ -76,7 +85,8 @@ const formatTimes = () => {
       return index < startIndex
     })
     starTime = times[0].sourceRelativeTime || times[0].relativeTime
-    // console.log("🚀 ~ times", times)
+    actualBeatLength = startIndex == 0 && !detailState.needTick ? actualBeatLength : 0
+    // console.log("🚀 ~ times", times, '开始小节', startIndex, actualBeatLength)
   }
   // 找到阶段评测,开始小节前面最近的是play或者listen的小节
   if (preTimes.length) {
@@ -176,7 +186,7 @@ const connect = async () => {
     speed: runtime.speed,
     heardLevel: SettingState.eva.difficulty,
     // beatLength: Math.round((RuntimeUtils.getFixTime(detailState.times[0].beatSpeed) * 1000) / rate),
-    beatLength: Math.round(detailState.times[0].fixtime * 1000 / rate),
+    beatLength: actualBeatLength,
   }
   // console.log("🚀 ~ content:", content, rate)
   const clientType = useClientType()

+ 4 - 3
src/subpages/colexiu/uses/use-app.ts

@@ -10,7 +10,7 @@ import { listenerMessage, postMessage } from '/src/helpers/native-message'
 import audiosInstance from '/src/helpers/multiple-audio'
 import { formatXML, onlyVisible, getCustomInfo } from '/src/pages/detail/helpers'
 import { MusicSheelDetail, ShaeetStatusType } from '../index.d'
-import { browser, getRequestHostname } from '/src/helpers/utils'
+import { browser, getRequestHostname, isEncoded } from '/src/helpers/utils'
 import formatId, { formatdata, getSubjectIdCode } from '../fingering/format-id'
 import { evaluatStopPlay } from '../buttons/evaluating'
 import state from '/src/pages/detail/state'
@@ -66,9 +66,10 @@ export const useMp3s = async (detail: MusicSheelDetail) => {
     } catch (error) {}
   }
   // 伴奏
-  const backgroundSong = encodeURI(detail.metronomeUrl || '')
+  const backgroundSong = isEncoded(detail.metronomeUrl || '') ? detail.metronomeUrl || '' : encodeURI(detail.metronomeUrl || '')
   // 原音
-  const musicSong = encodeURI(activebg?.audioFileUrl|| '')
+  const musicSong = isEncoded(activebg?.audioFileUrl|| '') ? activebg?.audioFileUrl || '' : encodeURI(activebg?.audioFileUrl|| '')
+  
   // 兼容未修改之前
   runtime.songs = {
     background: backgroundSong ? backgroundSong + '?t=background' : '',