Skip to content

Commit 0d6797c

Browse files
fix(backlog): stop other backlog audio and game vocal on click
Backlog 界面点击语音按钮时只调用 play(),未暂停其他 正在播放的 backlog 音频元素,导致多条语音同时播放。 同时未暂停游戏内正在播放的 currentVocal 语音, 点击 backlog 语音时与游戏内语音混合。 通过 querySelectorAll 匹配所有 backlog audio 元素, 在播放新语音前暂停并重置其他元素;同时暂停并重置 currentVocal 元素以避免与 backlog 语音混合。 Closes #866
1 parent 5a9e59a commit 0d6797c

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

packages/webgal/src/UI/Backlog/Backlog.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,24 @@ export const Backlog = () => {
127127
<div
128128
onClick={() => {
129129
playSeClick();
130+
// 暂停其他所有正在播放的 backlog 语音,避免多条音频混合
131+
const currentAudioId = 'backlog_audio_play_element_' + indexOfBacklog;
132+
document
133+
.querySelectorAll('[id^="backlog_audio_play_element_"]')
134+
.forEach((audio: any) => {
135+
if (audio.id !== currentAudioId) {
136+
audio.pause();
137+
audio.currentTime = 0;
138+
}
139+
});
140+
// 暂停游戏内正在播放的语音,避免与 backlog 语音混合
141+
const currentVocal = document.getElementById('currentVocal') as HTMLAudioElement | null;
142+
if (currentVocal) {
143+
currentVocal.pause();
144+
currentVocal.currentTime = 0;
145+
}
130146
// 获取到播放 backlog 语音的元素
131-
const backlog_audio_element: any = document.getElementById(
132-
'backlog_audio_play_element_' + indexOfBacklog,
133-
);
147+
const backlog_audio_element: any = document.getElementById(currentAudioId);
134148
if (backlog_audio_element) {
135149
backlog_audio_element.currentTime = 0;
136150
const userDataStore = webgalStore.getState().userData;

0 commit comments

Comments
 (0)