diff --git a/packages/webgal/src/UI/Backlog/Backlog.tsx b/packages/webgal/src/UI/Backlog/Backlog.tsx index 878f79f20..6b86c2c22 100644 --- a/packages/webgal/src/UI/Backlog/Backlog.tsx +++ b/packages/webgal/src/UI/Backlog/Backlog.tsx @@ -10,6 +10,7 @@ import useTrans from '@/hooks/useTrans'; import { compileSentence, EnhancedNode } from '@/Stage/TextBox/TextBox'; import useSoundEffect from '@/hooks/useSoundEffect'; import { WebGAL } from '@/Core/WebGAL'; +import { stopAuto } from '@/Core/controller/gamePlay/autoPlay'; export const Backlog = () => { const t = useTrans('gaming.'); @@ -127,6 +128,21 @@ export const Backlog = () => {
{ playSeClick(); + // 暂停所有 backlog 语音(包括当前;后续会重置并播放当前) + document + .querySelectorAll('[id^="backlog_audio_play_element_"]') + .forEach((audio: any) => { + audio.pause(); + audio.currentTime = 0; + }); + // 暂停游戏内正在播放的语音,避免与 backlog 语音混合 + const currentVocal = document.getElementById('currentVocal') as HTMLAudioElement | null; + if (currentVocal) { + currentVocal.pause(); + currentVocal.currentTime = 0; + } + // 卸载 vocal-play perform,避免其 blockingAuto 阻塞自动播放 + WebGAL.gameplay.performController.unmountPerform('vocal-play', true); // 获取到播放 backlog 语音的元素 const backlog_audio_element: any = document.getElementById( 'backlog_audio_play_element_' + indexOfBacklog, @@ -165,6 +181,7 @@ export const Backlog = () => { useEffect(() => { /* 切换为展示历史记录时触发 */ if (GUIStore.showBacklog) { + stopAuto(); // logger.info('展示backlog'); // 立即清除 防止来回滚动时可能导致的错乱 if (timeRef.current) {