Prechádzať zdrojové kódy

修复节拍器合成绑定事件bug

黄琪勇 1 mesiac pred
rodič
commit
eccadd019c
1 zmenil súbory, kde vykonal 10 pridanie a 5 odobranie
  1. 10 5
      src/view/audio-list/index.tsx

+ 10 - 5
src/view/audio-list/index.tsx

@@ -374,6 +374,8 @@ export async function changeCombineAudio (combineIndex: number){
 		audioData.combineIndex = -1
 		state.playSource = "background"
 		state.music = ""
+		// 当开启节拍器的时候,切为伴奏的时候合成节拍器1
+		await handleLoadBeatMusic()
 		// 当没有背景音文件的时候
 		if(!state.accompany) {
 			state.noMusicSource = true
@@ -398,15 +400,18 @@ export async function changeCombineAudio (combineIndex: number){
 		const music = await createAudio(musicUrl)
 		const beatMusic = await mergeBeatAudio(musicUrl)
 		// 当没有背景音的时候 需要绑定事件
-		if(!state.accompany){
+		if(!audioData.songCollection.backgroundEle){
 			if(music){
 				music.addEventListener("play", onPlay);
 				music.addEventListener("ended", onEnded);
 			}			
-			if(beatMusic){
-				beatMusic.addEventListener("play", onPlay);
-				beatMusic.addEventListener("ended", onEnded);
-			}
+		}
+		// 取消掉背景音绑定的时候,然后给当前原音节拍音频绑定事件,这样防止没有背景节拍的时候,能给
+		if(beatMusic){
+			audioData.songCollection.beatBackgroundEle?.removeEventListener("play", onPlay)
+			audioData.songCollection.beatBackgroundEle?.removeEventListener("ended", onEnded)
+			beatMusic.addEventListener("play", onPlay);
+			beatMusic.addEventListener("ended", onEnded);
 		}
 		audioData.combineMusicEles.push({
 			key: combineIndex,