|
@@ -723,7 +723,28 @@ const handlePlaying = () => {
|
|
|
// 如果开启了预备拍
|
|
|
const selectStartItem = state.sectionFirst ? state.sectionFirst : state.section[0];
|
|
|
const selectEndItem = state.section[1];
|
|
|
-
|
|
|
+ if (currentTime - selectEndItem.endtime >= 0) {
|
|
|
+ console.log("选段播放结束", state.setting.repeatAutoPlay);
|
|
|
+ // 如果为选段评测模式
|
|
|
+ if (state.modeType === "evaluating" && state.isSelectMeasureMode) {
|
|
|
+ onEnded();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // #8698 bug修复
|
|
|
+ if (state.modeType === "practise" && state.sectionStatus) {
|
|
|
+ // 练习作业,练习完一次需要增加练习次数
|
|
|
+ if (query.workRecord) {
|
|
|
+ HANDLE_WORK_ADD()
|
|
|
+ }
|
|
|
+ onEnded();
|
|
|
+ // state.activeNoteIndex = state.sectionFirst ? state.sectionFirst.i : state.section[0].i
|
|
|
+ // dynamicShowPlaySpeed(state.activeNoteIndex)
|
|
|
+ resetPlaybackToStart();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ item = selectStartItem;
|
|
|
+ setAudioCurrentTime(selectStartItem.time, selectStartItem.i);
|
|
|
+ }
|
|
|
/**
|
|
|
* #9374,反复小节的曲目播放错误, bug修复
|
|
|
* 曲目:噢!苏珊娜-排箫-人音
|
|
@@ -750,28 +771,7 @@ const handlePlaying = () => {
|
|
|
// if (Math.abs(selectEndItem.endtime - currentTime) < offset_duration) {
|
|
|
// if (currentTime - selectEndItem.endtime > offset_duration) {
|
|
|
//console.log(currentTime,selectEndItem.endtime)
|
|
|
- if (currentTime - selectEndItem.endtime >= 0) {
|
|
|
- console.log("选段播放结束", state.setting.repeatAutoPlay);
|
|
|
- // 如果为选段评测模式
|
|
|
- if (state.modeType === "evaluating" && state.isSelectMeasureMode) {
|
|
|
- onEnded();
|
|
|
- return;
|
|
|
- }
|
|
|
- // #8698 bug修复
|
|
|
- if (state.modeType === "practise" && state.sectionStatus) {
|
|
|
- // 练习作业,练习完一次需要增加练习次数
|
|
|
- if (query.workRecord) {
|
|
|
- HANDLE_WORK_ADD()
|
|
|
- }
|
|
|
- onEnded();
|
|
|
- // state.activeNoteIndex = state.sectionFirst ? state.sectionFirst.i : state.section[0].i
|
|
|
- // dynamicShowPlaySpeed(state.activeNoteIndex)
|
|
|
- resetPlaybackToStart();
|
|
|
- return;
|
|
|
- }
|
|
|
- item = selectStartItem;
|
|
|
- setAudioCurrentTime(selectStartItem.time, selectStartItem.i);
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
gotoNext(item);
|
|
|
dynamicShowPlaySpeed(item.i, true);
|
|
@@ -1061,13 +1061,13 @@ export const gotoNext = (note: any, skipNote?: boolean) => {
|
|
|
// 赋值音符id
|
|
|
osmd.cursor.noteGraphicalId = state.times[state.activeNoteIndex].id;
|
|
|
// 设置光标位置
|
|
|
- nextTick(() => {
|
|
|
- if (osmd.cursor.noteGraphicalId) {
|
|
|
- const { x, y } = document.getElementById(`vf-${osmd.cursor.noteGraphicalId}`)?.getBoundingClientRect() || { x: 0, y: 0}
|
|
|
- osmd.cursor.cursorElement.style.left = x + "px";
|
|
|
- // cursorElement.style.top = y + "px";
|
|
|
- }
|
|
|
- })
|
|
|
+ // nextTick(() => {
|
|
|
+ // if (osmd.cursor.noteGraphicalId) {
|
|
|
+ // const { x, y } = document.getElementById(`vf-${osmd.cursor.noteGraphicalId}`)?.getBoundingClientRect() || { x: 0, y: 0}
|
|
|
+ // osmd.cursor.cursorElement.style.left = x + "px";
|
|
|
+ // // cursorElement.style.top = y + "px";
|
|
|
+ // }
|
|
|
+ // })
|
|
|
dynamicShowPlaySpeed(state.activeNoteIndex);
|
|
|
if (prev && num - prev === 1) {
|
|
|
// console.log('跳转音符',11111,osmd.cursor)
|
|
@@ -1813,9 +1813,13 @@ const setState = (data: any, index: number) => {
|
|
|
}
|
|
|
state.enableEvaluation = false;
|
|
|
}
|
|
|
- if (storeData.isApp) {
|
|
|
+ if (storeData.isApp && !state.isPreView) {
|
|
|
state.zoom = localStorage.getItem('scoreZoom') ? Number(localStorage.getItem('scoreZoom')) : state.zoom
|
|
|
}
|
|
|
+ // 详情预览页面,曲谱比例
|
|
|
+ if (state.isPreView) {
|
|
|
+ state.zoom = query.zoom ? Number(query.zoom) : state.zoom;
|
|
|
+ }
|
|
|
/**
|
|
|
* 默认渲染什么谱面类型 & 能否转谱逻辑
|
|
|
* 渲染类型:首先取url参数musicRenderType,没有该参数则取musicalInstruments字段匹配的当前分轨的defaultScore,没有匹配到则取默认值('firstTone')
|
|
@@ -2122,6 +2126,10 @@ watch(
|
|
|
if(state.sectionFirst && measureNum === state.sectionFirst.MeasureNumberXML && state.section.length === 2){
|
|
|
item?.querySelector('.vf-custom-bg')?.setAttribute("fill", "rgba(255, 193, 48, 0.15)")
|
|
|
}
|
|
|
+ // 如果是选段,超出选段时,不添加背景色
|
|
|
+ if (state.section.length === 2 && state.activeMeasureIndex > state.section[1].MeasureNumberXML) {
|
|
|
+ item.querySelector('.vf-custom-bg')?.setAttribute("fill", "transparent")
|
|
|
+ }
|
|
|
} else {
|
|
|
// 有选段只清除选段处的
|
|
|
if (state.section.length === 2) {
|
|
@@ -2288,27 +2296,31 @@ export const handleGuide = async () => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+// 手动设置音符指针位置
|
|
|
export const resetCursorPosition = () => {
|
|
|
- if (metronomeData.cursorMode === 1) {
|
|
|
- const currentActives: HTMLElement[] = Array.from(document.querySelectorAll(".dotActive"));
|
|
|
- currentActives.forEach((currentActive) => {
|
|
|
- currentActive?.classList.remove("dotActive");
|
|
|
- })
|
|
|
- // const currentDot = document.querySelector(`.noteIndex_${state.activeNoteIndex}`)
|
|
|
- const noteId = state.times[state.activeNoteIndex].id;
|
|
|
- const domId = "vf" + noteId;
|
|
|
- const currentDot = document.querySelector(`[data-vf=${domId}]`)?.parentElement
|
|
|
- if (currentDot) {
|
|
|
- setTimeout(() => {
|
|
|
- currentDot.classList.add('dotActive')
|
|
|
- }, 0);
|
|
|
+ nextTick(() => {
|
|
|
+ if (metronomeData.cursorMode === 1) {
|
|
|
+ const currentActives: HTMLElement[] = Array.from(document.querySelectorAll(".dotActive"));
|
|
|
+ currentActives.forEach((currentActive) => {
|
|
|
+ currentActive?.classList.remove("dotActive");
|
|
|
+ })
|
|
|
+ // const currentDot = document.querySelector(`.noteIndex_${state.activeNoteIndex}`)
|
|
|
+ const noteId = state.times[state.activeNoteIndex].id;
|
|
|
+ const domId = "vf" + noteId;
|
|
|
+ const currentDot = document.querySelector(`[data-vf=${domId}]`)?.parentElement
|
|
|
+ if (currentDot) {
|
|
|
+ setTimeout(() => {
|
|
|
+ currentDot.classList.add('dotActive')
|
|
|
+ }, 0);
|
|
|
+ }
|
|
|
+ currentDot?.classList.add('dotActive')
|
|
|
+ } else {
|
|
|
+ const currentActives: HTMLElement[] = Array.from(document.querySelectorAll(".dotActive"));
|
|
|
+ currentActives.forEach((currentActive) => {
|
|
|
+ currentActive?.classList.remove("dotActive");
|
|
|
+ })
|
|
|
}
|
|
|
- } else {
|
|
|
- const currentActives: HTMLElement[] = Array.from(document.querySelectorAll(".dotActive"));
|
|
|
- currentActives.forEach((currentActive) => {
|
|
|
- currentActive?.classList.remove("dotActive");
|
|
|
- })
|
|
|
- }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
|