Преглед на файлове

Merge branch 'gyt-feature-tianyong' into gyt-test

TIANYONG преди 9 месеца
родител
ревизия
91ac49c8bc

+ 4 - 0
colexiu-report-share.html

@@ -10,7 +10,11 @@
   <!-- <link href="https://fonts.loli.net/css2?family=Roboto:wght@700&display=swap" rel="stylesheet"> -->
   <script>
     this.globalThis || (this.globalThis = this)
+<<<<<<< HEAD
   </script>
+=======
+  </script>  
+>>>>>>> gyt-feature-tianyong
   <script type="text/javascript">document.write(unescape("%3Cspan id='cnzz_stat_icon_1279349593'%3E%3C/span%3E%3Cscript src='https://s9.cnzz.com/z_stat.php%3Fid%3D1279349593%26show%3Dpic' type='text/javascript'%3E%3C/script%3E"));</script>
   <script type="text/javascript">
     // if (window.location.hostname !== 'mstuonline.dayaedu.com') {

+ 4 - 0
colexiu-report.html

@@ -11,7 +11,11 @@
   <link href="/vant.css" rel="stylesheet">
   <script>
     this.globalThis || (this.globalThis = this)
+<<<<<<< HEAD
   </script>
+=======
+  </script>  
+>>>>>>> gyt-feature-tianyong
   <script>
     function getBroswer() {
       var Sys = {};

+ 4 - 0
colexiu-share.html

@@ -8,7 +8,11 @@
   <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
   <script>
     this.globalThis || (this.globalThis = this)
+<<<<<<< HEAD
   </script>
+=======
+  </script>  
+>>>>>>> gyt-feature-tianyong
   <style>
     #loading{
       position: fixed;

+ 3 - 2
osmd-extended/src/MusicalScore/Graphical/MusicSheetCalculator.ts

@@ -738,10 +738,11 @@ export abstract class MusicSheetCalculator {
                 multiExpression.getFontstyleOfFirstEntry(),
                 placement,
                 fontHeight);
-
+            
+            // @ts-ignore    
             const gue: GraphicalUnknownExpression = new GraphicalUnknownExpression(
                 staffLine, graphLabel, placement, measures[staffIndex]?.parentSourceMeasure, multiExpression);
-                //console.log(gue)
+            // console.log(gue)
             //    multiExpression); // TODO would be nice to hand over and save reference to original expression,
             //                         but MultiExpression is not an AbstractExpression.
             // staffline 里面最后的文字重叠问题,向后偏移

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/pages/detail/CheckDelayPopup/image/bg.json


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/pages/detail/CheckDelayPopup/image/left_ adorn.json


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/pages/detail/CheckDelayPopup/image/right_ adorn.json


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/pages/detail/CheckDelayPopup/image/step1_icon.json


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/pages/detail/CheckDelayPopup/image/step2_icon.json


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/pages/detail/CheckDelayPopup/image/step3_icon.json


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/pages/detail/CheckDelayPopup/image/step4_icon.json


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/pages/detail/CheckDelayPopup/image/step5_icon.json


+ 30 - 7
src/pages/detail/runtime.ts

@@ -140,6 +140,10 @@ const state = reactive({
   } as {[key: string]: () => void},  
   /** 阶段评测,延迟检测是否检测过 */
   delayCheckFirst: false,  
+  /** 开始播放时,记录的mp3播放倍率,用户当前设置的速度/当前小节的速度 */
+  basePlayRate: 1,
+  /** 播放中,更加当前小节速度动态计算的展示速度 */
+  playIngSpeed: 90,
 })
 
 const syncStepIndex = (i: number) => {
@@ -299,7 +303,7 @@ export const changeAllMode = () => {
 }
 
 export const changeSpeed = (speed: number, isSave: boolean = true) => {
-  // console.log(speed)
+  console.log('速度设置',speed,isSave)
   // const route: any = router.currentRoute.value
   const speeds = store.get('speeds') || {}
   if (isSave){
@@ -307,6 +311,7 @@ export const changeSpeed = (speed: number, isSave: boolean = true) => {
     store.set('speeds', speeds)
   }
   state.speed = speed
+  state.playIngSpeed = speed
   if (!detailState.activeDetail) return
   state.audiosInstance?.setSpeed(speed / detailState.baseSpeed)
   promisefiyPostMessage({
@@ -368,12 +373,23 @@ export const refreshIndexBase = (index: number) => {
   }
 }
 
-// 练习模式下,变速的曲子,根据当前小节速度,设置音频播放倍率
-const dynamicSetPlayRate = (index: number) => {
-  const item: any = detailState.times[index];
-  if (item && modelType.value === "practice" && state.playState === "play" && item.measureSpeed && item.measureSpeed !== detailState.baseSpeed) {
+// 练习模式下,开始播放时,记录mp3的播放倍率
+export const initSetPlayRate = () => {
+  const item: any = detailState.times[state.activeIndex];
+  if (item && modelType.value === "practice" && item.measureSpeed) {
     const ratio = state.speed / item.measureSpeed
-    state.audiosInstance?.setSpeed(ratio)
+    // state.audiosInstance?.setSpeed(ratio)
+    state.basePlayRate = ratio || 1;
+    console.log('播放倍率',state.basePlayRate)
+  }
+}
+
+// 根据当前小节动态设置,右上角展示的速度
+const dynamicShowPlaySpeed = (index: number) => {
+  const item: any = detailState.times[index];
+
+  if (item && modelType.value === "practice" && state.playState === "play" && item.measureSpeed ) {
+    state.playIngSpeed = Math.floor(state.basePlayRate * item.measureSpeed)
   }
 }
 
@@ -388,7 +404,7 @@ export const refreshIndex = (ctime?: number) => {
     const index = getIndex(detailState.times, currentTimeNum)
     // 监听app返回的ctime
     // console.log(777777777,index,ctime)
-    dynamicSetPlayRate(index);
+    dynamicShowPlaySpeed(index);
     state.activeIndex = index
     removeRepateBackground(index)
     // console.log(currentTimeNum, index, detailState.times[detailState.times.length - 1]?.endtime)
@@ -623,6 +639,7 @@ let nowTime = 0
 
 let prevTime: number = 0
 
+// 播放中一直触发
 const accelerateRefreshPlayer = () => {
   if (timer || !state.audiosInstance) {
     return
@@ -1072,8 +1089,14 @@ export const noteClick = (evt: MouseEvent) => {
     return
   }
   let activeNote = getNoteBySlursStart(getActtiveNoteByTimes(evt))
+  console.log('点击音符',activeNote)
   if (activeNote) {
     const time = activeNote.sourceStartTime || activeNote.time
+    // 点击音符,动态设置右上角的速度
+    if (activeNote.measureSpeed) {
+      state.speed = Math.floor(state.basePlayRate * activeNote.measureSpeed)
+      state.playIngSpeed = state.speed
+    }
     setCurrentTime(time)
     setStepView(activeNote.i, time)
     detailState.fixedKey = activeNote.realKey

+ 1 - 1
src/pages/detail/section-box/index.tsx

@@ -297,7 +297,7 @@ export default defineComponent({
           const boundingBox = getBoundingBoxByverticalNote(item)
           let X: number | undefined = undefined
           try {
-            const bbox = item.svgElelent.bbox || item.svgElelent?.getBoundingBox()
+            const bbox = item.svgElelent?.bbox || item.svgElelent?.getBoundingBox && item.svgElelent?.getBoundingBox()
             X = formatZoom(bbox?.x || (index === 0 ? boundingBox.start_x : boundingBox.end_x))
           } catch (error) {
             console.log(error)

+ 6 - 3
src/subpages/colexiu/buttons/index.tsx

@@ -429,20 +429,23 @@ export default defineComponent({
                       class={[styles.button, styles.hasText, styles.speedButton]}
                       disabled={runtime.evaluatingStatus || runtime.playState === 'play'}
                       onClick={() => {
-                        speedRef.value?.refUpdateSpeed(runtime.speed)
+                        speedRef.value?.refUpdateSpeed(runtime.playIngSpeed || runtime.speed)
                         runtime.speedShow = !runtime.speedShow
                       }}
                     >
                       <ButtonIcon name="speed" />
                       <span>速度</span>
-                      <span class={styles.label}>{runtime.speed}</span>
+                      <span class={styles.label}>{runtime.playIngSpeed || runtime.speed}</span>
                     </Button>
                   ),
                 }}
               >
                 <Speed
                   ref={speedRef}
-                  updateSpeed={(speed: number) => (runtime.speed = speed)}
+                  updateSpeed={(speed: number) => {
+                    runtime.speed = speed
+                    runtime.playIngSpeed = speed
+                  }}
                   changed={RuntimeUtils.changeSpeed}
                   mode={runtime.mode}
                   changeMode={RuntimeUtils.changeMode}

+ 1 - 0
src/subpages/colexiu/buttons/player.tsx

@@ -88,6 +88,7 @@ export default defineComponent({
                           name="play"
                           onClick={() => {
                             console.log('开始播放')
+                            RuntimeUtils.initSetPlayRate();
                             RuntimeUtils.sendParentMessage('play')
                           }}
                         />

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

@@ -263,6 +263,7 @@ export default defineComponent({
       // const freeRate = await useConfigMusicSheetFreeRate()
       // detailState.freeRate = freeRate.value
       useCamera()
+      // 获取详情接口后,初始化右上角的播放速度
       RuntimeUtils.changeSpeed(detailState.activeSpeed)
       if (((detailState.setting?.resets || []) as string[]).includes('SPEED')) {
         if (detailState.activeDetail) {

+ 1 - 1
src/subpages/colexiu/popups/setting/practise.tsx

@@ -24,7 +24,7 @@ export default defineComponent({
       return (
         <div>
           <div class={styles.groupBox}>
-            <Cell center border={false} title="循环播放">
+            <Cell center border={false} title="循环播放2">
               <Switch v-model={SettingState.sett.loop} {...switchProps}>
                 off
               </Switch>

Някои файлове не бяха показани, защото твърде много файлове са промени