|
@@ -384,6 +384,29 @@ const handlePlaying = () => {
|
|
|
const selectStartItem = state.sectionFirst ? state.sectionFirst : state.section[0];
|
|
|
const selectEndItem = state.section[1];
|
|
|
|
|
|
+ /**
|
|
|
+ * #9374,反复小节的曲目播放错误, bug修复
|
|
|
+ * 曲目:噢!苏珊娜-排箫-人音
|
|
|
+ * 现象:重播小节为2-9,选段为4-12,当播完第9小节后会回到第2小节重播2-8,再播放10-12
|
|
|
+ * 4-12,不符合重播规则,所以播完第9小节后,音频需要跳转到第10小节播放
|
|
|
+ */
|
|
|
+ if (state.repeatInfo.length) {
|
|
|
+ const canRepeatInfo = verifyCanRepeat(state.section[0].MeasureNumberXML, state.section[1].MeasureNumberXML)
|
|
|
+ const repeatIdx = canRepeatInfo.repeatIdx == -1 ? 0 : canRepeatInfo.repeatIdx
|
|
|
+ if (state.modeType === "practise" && !canRepeatInfo.canRepeat && state.section[1].MeasureNumberXML > state.repeatInfo[repeatIdx].end) {
|
|
|
+ const preItem = state.times[item.i - 1]
|
|
|
+ if (preItem && preItem.MeasureNumberXML > item.MeasureNumberXML) {
|
|
|
+ const skipItem = state.times.find((item: any) => item.MeasureNumberXML === preItem.MeasureNumberXML + 1)
|
|
|
+ if (skipItem) {
|
|
|
+ // 跳转到指定的音频位置
|
|
|
+ setAudioCurrentTime(skipItem.time, skipItem.i);
|
|
|
+ gotoNext(skipItem);
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (Math.abs(selectEndItem.endtime - currentTime) < offset_duration) {
|
|
|
console.log("选段播放结束");
|
|
|
// 如果为选段评测模式
|
|
@@ -670,6 +693,7 @@ export const setSection = (start: number, end: number, userSpeed?: number) => {
|
|
|
let lastEndNotes = endNotes.filter((n: any) => n.noteId === lastEndId)
|
|
|
// 是否符合重播规则
|
|
|
const canRepeatInfo = verifyCanRepeat(start, end)
|
|
|
+ console.log(22222,canRepeatInfo)
|
|
|
const isCanRepeat = canRepeatInfo.canRepeat
|
|
|
// 如果符合重播规则,但是lastEndNotes长度为1,则需要向前找,直到找到lastEndNotes长度为2
|
|
|
let currentEndNum: number = end
|