Commit cb184464 authored by 陈冲's avatar 陈冲

fix: 修复贺彩声重复播放

parent cfe3dcf5
...@@ -11,6 +11,7 @@ const applause = assetUrl('applause.mp3') ...@@ -11,6 +11,7 @@ const applause = assetUrl('applause.mp3')
let backgroundMusic: HTMLAudioElement | null = null let backgroundMusic: HTMLAudioElement | null = null
let countdownTemplate: HTMLAudioElement | null = null let countdownTemplate: HTMLAudioElement | null = null
let pendingCountdownRetry: (() => void) | null = null let pendingCountdownRetry: (() => void) | null = null
let applausePlayed = false
const countdownAudios = new Set<HTMLAudioElement>() const countdownAudios = new Set<HTMLAudioElement>()
...@@ -62,19 +63,27 @@ function getBackgroundMusic(music: string, force: boolean = false, loop: boolean ...@@ -62,19 +63,27 @@ function getBackgroundMusic(music: string, force: boolean = false, loop: boolean
//播放庆祝音乐 //播放庆祝音乐
export async function playApplauseMusic() { export async function playApplauseMusic() {
if (applausePlayed) return
const audio = getBackgroundMusic(applause, false, false) const audio = getBackgroundMusic(applause, false, false)
audio.loop = false
try { try {
applausePlayed = true
await audio.play() await audio.play()
window.removeEventListener('pointerdown', playApplauseMusic) window.removeEventListener('pointerdown', playApplauseMusic)
window.removeEventListener('keydown', playApplauseMusic) window.removeEventListener('keydown', playApplauseMusic)
} catch { } catch {
applausePlayed = false
window.removeEventListener('pointerdown', playApplauseMusic)
window.removeEventListener('keydown', playApplauseMusic)
window.addEventListener('pointerdown', playApplauseMusic, { once: true }) window.addEventListener('pointerdown', playApplauseMusic, { once: true })
window.addEventListener('keydown', playApplauseMusic, { once: true }) window.addEventListener('keydown', playApplauseMusic, { once: true })
} }
} }
export function stopApplauseMusic() { export function stopApplauseMusic() {
applausePlayed = false
window.removeEventListener('pointerdown', playApplauseMusic) window.removeEventListener('pointerdown', playApplauseMusic)
window.removeEventListener('keydown', playApplauseMusic) window.removeEventListener('keydown', playApplauseMusic)
// 只有当当前播放的是喝彩音乐时才暂停,避免误伤背景音乐 // 只有当当前播放的是喝彩音乐时才暂停,避免误伤背景音乐
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment