|
@@ -895,6 +895,7 @@ export const gotoNext = (note: any, skipNote?: boolean) => {
|
|
|
console.log(error);
|
|
|
}
|
|
|
// 重置 或者切换演奏演唱的时候 可能出现 state.activeNoteIndex === note.i的情况 执行
|
|
|
+ fillWordColor();
|
|
|
if (state.isSingleLine && state.playState === "paused") {
|
|
|
moveSvgDom(skipNote);
|
|
|
}
|
|
@@ -928,6 +929,7 @@ export const gotoNext = (note: any, skipNote?: boolean) => {
|
|
|
} catch (error) {
|
|
|
console.log(error);
|
|
|
}
|
|
|
+ fillWordColor();
|
|
|
// 一行谱,需要滚动小节
|
|
|
if (state.isSingleLine) {
|
|
|
moveSvgDom(skipNote);
|
|
@@ -1519,8 +1521,8 @@ export const addNoteBBox = (list: any[]) => {
|
|
|
|
|
|
}
|
|
|
|
|
|
-/** 跳动svgdom */
|
|
|
-export const moveSvgDom = (skipNote?: boolean) => {
|
|
|
+// 给歌词和音符添加动态颜色
|
|
|
+const fillWordColor = () => {
|
|
|
// console.log('当前音符',state.activeNoteIndex)
|
|
|
state.times.forEach((item: any, idx: number) => {
|
|
|
const svgEl = document.getElementById(`vf-${state.times[idx]?.svgElement?.attrs?.id}`)
|
|
@@ -1545,8 +1547,11 @@ export const moveSvgDom = (skipNote?: boolean) => {
|
|
|
if (index === currentNote.repeatIdx) {
|
|
|
lyric?.classList.add('lyricActive')
|
|
|
}
|
|
|
- })
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
+/** 跳动svgdom */
|
|
|
+export const moveSvgDom = (skipNote?: boolean) => {
|
|
|
/**
|
|
|
* 计算需要移动的距离
|
|
|
* 当前选中的音符和第一个音符之间的间距
|
|
@@ -1567,26 +1572,20 @@ watch(
|
|
|
() => state.activeMeasureIndex,
|
|
|
() => {
|
|
|
// 需要减去的合并小节数
|
|
|
- let needReduceMultipleRestNum = 0;
|
|
|
+ let needReduceMultipleRestNum = 1;
|
|
|
for(let noteIndex = 0; noteIndex < state.times.length; noteIndex++){
|
|
|
const note = state.times[noteIndex];
|
|
|
if (note.MeasureNumberXML > state.activeMeasureIndex) {
|
|
|
break;
|
|
|
}
|
|
|
- if (note.multipleRestMeasures) {
|
|
|
- // if (note.multipleRestMeasures < note.totalMultipleRestMeasures) {
|
|
|
- // needReduceMultipleRestNum += note.MeasureNumberXML - note.multipleRestMeasures + 1;
|
|
|
- // } else {
|
|
|
- // needReduceMultipleRestNum += note.totalMultipleRestMeasures - 1;
|
|
|
- // }
|
|
|
- // needReduceMultipleRestNum += note.MeasureNumberXML - note.multipleRestMeasures + 1;
|
|
|
+ // 合并的小节数+1
|
|
|
+ // if (note.multipleRestMeasures && (note.multipleRestMeasures > 1 || (note.multipleRestMeasures === 1 && note.MeasureNumberXML === 1))) {
|
|
|
+ // needReduceMultipleRestNum += 1;
|
|
|
+ // }
|
|
|
+ if (note.multipleRestMeasures && note.multipleRestMeasures > 1) {
|
|
|
needReduceMultipleRestNum += 1;
|
|
|
}
|
|
|
- // if (note.multipleRestMeasures === 0 && state.times[noteIndex-1]?.multipleRestMeasures) {
|
|
|
- // needReduceMultipleRestNum += state.times[noteIndex-1]?.multipleRestMeasures
|
|
|
- // }
|
|
|
}
|
|
|
- needReduceMultipleRestNum = needReduceMultipleRestNum >= 0 ? needReduceMultipleRestNum : 0;
|
|
|
const matchMeasureNum = state.activeMeasureIndex - needReduceMultipleRestNum
|
|
|
console.log('选中的小节',matchMeasureNum,'需要减去的小节',needReduceMultipleRestNum,'当前的小节',state.activeMeasureIndex)
|
|
|
state.vfmeasures.forEach((item: any, idx: number) => {
|