Forráskód Böngészése

feat: 打击乐下的多分轨合并展示

TIANYONG 1 éve
szülő
commit
5997bb1c9e

+ 1 - 1
osmd-extended/src/MusicalScore/Graphical/JustifiedMusicSystemBuilder.ts

@@ -147,7 +147,7 @@ export class JustifiedMusicSystemBuilder extends MusicSystemBuilder {
                 totalWidth += measureWidth
                 // console.log(idx , totalWidth, systemSpace )
                 const appName = (window as any)?.appName || '';
-                if (appName?.toLocaleUpperCase() === 'GYM') {
+                if (appName?.toLocaleUpperCase() === 'GYM' || (window as any)?.customSectionAmount) {
                     // 修改 部分曲谱修改换行小节数
                     let wrapNum = (window as any).GYM?.wrapNum;
                     wrapNum = Number(wrapNum) > 0 ? Number(wrapNum) : 6

+ 8 - 0
src/helpers/utils.ts

@@ -195,3 +195,11 @@ export const isEncoded = (uri: string) => {
   uri = uri || '';
   return uri !== decodeURI(uri);
 }
+
+/** 设置全局通信 */
+export const setGlobalData = (_key: string, _value: any) => {
+  if (!_key || !_value) return;
+  const GYM = (window as any).GYM || {};
+  GYM[_key] = _value
+  ;(window as any).GYM = GYM
+}

+ 2 - 0
src/pages/detail/state.ts

@@ -88,6 +88,8 @@ const state = reactive({
   isLessonTrain: false,
   /** 是否隐藏评测报告弹窗,保存演奏按钮,默认不隐藏 */
   isHideEvaluatReportSaveBtn: false,    
+  /** 合奏曲目是否合并展示 */
+  isCombineRender: false,
 })
 
 export const isRhythmicExercises = (musicName?: string) => {

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

@@ -389,6 +389,7 @@ export default defineComponent({
                     style={musicSheetStyle}
                     score={score.value}
                     isSoundEffect={true}
+                    showPartNames={detailState.isCombineRender}
                     EngravingRules={{
                       DYMusicScoreType: SettingState.sett.type,
                     }}

+ 14 - 2
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, isEncoded } from '/src/helpers/utils'
+import { browser, getRequestHostname, isEncoded, setGlobalData } from '/src/helpers/utils'
 import formatId, { formatdata, getSubjectIdCode } from '../fingering/format-id'
 import { evaluatStopPlay } from '../buttons/evaluating'
 import state from '/src/pages/detail/state'
@@ -43,7 +43,12 @@ export const useXml = async (url: string, detail: MusicSheelDetail) => {
       score.value = formatXML(parseXmlInfo.parsedXML, {
         title: detail.musicSheetName,
       })
-      score.value = onlyVisible(score.value, partIndex)
+      // 多种乐器分轨合并显示
+      if (state.isCombineRender) {
+        setGlobalData('wrapNum', 4)
+      } else {
+        score.value = onlyVisible(score.value, partIndex)
+      }
       state.partIndex = partIndex
     }
     state.gradual = getGradualLengthByXml(xml)
@@ -171,6 +176,13 @@ export const useDetail = (id: number | string): [Ref<ShaeetStatusType>, Ref<Musi
       // 设置是否特殊曲谱, 是特殊曲谱取反(不理解之前的思考逻辑), 使用后台设置的速度
       detailState.isSpecialBookCategory = !classids.includes(res.data.musicSheetCategoriesId) 
       detailState.subjectId = Number(musicInfo.musicSubject)
+      // 打击乐声部下的曲目,需要合并展示所有分轨
+      if (Number(res.data.musicSubject) === 1 && res.data.background?.length) {
+        state.isCombineRender = true
+        // 开启自定义每行显示的小节数
+        ;(window as any).customSectionAmount = true
+        setGlobalData('multitrack', res.data.background?.length)
+      }
       ;(window as any).DYSubjectId = formatId(data.value.code as any)
       status.value = 'success'