const audioFils = { 第一轮: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblu6fl26qrspvy79.mp3", 第二轮: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblu6fehshrpe5ook.mp3", 第三轮: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblu6fgbz3iimk7yy.mp3", 第四轮: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblu6fjwf50tlxxbi.mp3", 第五轮: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblu6fg63lqrslhm7.mp3", 决金箭轮: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblu6fhjycwubbwil.mp3", 请蓝方射击: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblu6fr0zpluiabph.mp3", 请红方射击: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblu6fu169yerpwey.mp3", 中场休息: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblu6fug8faqrbtwd.mp3", 比赛结束: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblsdl717ilr0b3o0.mp3", 比赛开始: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbblsdl7qlkqgvthfr.mp3", 请开始射击: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbljrfx5guqt5oulk.mp3", 未上靶: "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbkxm60bul0khcoqq.mp3", "1环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbklufj59qmdo96ha.mp3", "2环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbklufogy49ousbv4.mp3", "3环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbklufl3hhijeasck.mp3", "4环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbklufo8vo7k6jxdz.mp3", "5环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbklkzq7lrbfpr6ij.mp3", "6环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbkll0fw7hbmmhxkl.mp3", "7环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbkll0fkirkanghmf.mp3", "8环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbkll0cly2noykieg.mp3", "9环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbkll0gsuumekhpkn.mp3", "10环": "https://static.shelingxingqiu.com/attachment/2025-07-14/dbbklgw2dk22ek7qha.mp3", 射击无效: "https://static.shelingxingqiu.com/attachment/2025-08-26/dcc9qc84rir8gkj3mo.mp3", 距离不足5米: "https://static.shelingxingqiu.com/attachment/2025-08-27/dcd59px1cavp1hogxi.mp3", }; class AudioManager { constructor() { this.audioMap = new Map(); this.currentPlayingKey = null; // 记录当前播放的音频key Object.keys(audioFils).forEach((key) => { const audio = uni.createInnerAudioContext(); audio.src = audioFils[key]; audio.autoplay = false; // 监听加载状态 audio.onCanplay(() => { // console.log(`音频 ${key} 已加载完成`); }); audio.onError((res) => { console.log(`音频 ${key} 加载失败:`, res.errMsg); }); // 监听播放结束事件 audio.onEnded(() => { if (this.currentPlayingKey === key) { this.currentPlayingKey = null; } }); // 监听播放停止事件 audio.onStop(() => { if (this.currentPlayingKey === key) { this.currentPlayingKey = null; } }); this.audioMap.set(key, audio); }); } // 播放指定音频 play(key) { // 如果有正在播放的音频,先停止 if (this.currentPlayingKey) { this.stop(this.currentPlayingKey); } const audio = this.audioMap.get(key); if (audio) { audio.play(); this.currentPlayingKey = key; } } // 停止指定音频 stop(key) { const audio = this.audioMap.get(key); if (audio) { audio.stop(); if (this.currentPlayingKey === key) { this.currentPlayingKey = null; } } } // 销毁所有音频实例 destroyAll() { this.audioMap.forEach((audio) => { audio.destroy(); }); this.audioMap.clear(); this.currentPlayingKey = null; } } // 导出单例 export default new AudioManager();