:: / ::
// 背景音乐控制器 - 完全同步版本 document.addEventListener('DOMContentLoaded', function() { // 获取背景音乐元素 const bgAudio = document.getElementById('bg-audio'); if (!bgAudio) { console.error("背景音乐元素未找到"); return; } // 初始化设置 bgAudio.volume = 0.66; // 设置音量 bgAudio.loop = true; // 循环播放 let bgAudioAllowed = false; // 是否允许播放 // 尝试播放背景音乐的函数 function tryPlayBGMusic() { if (!bgAudioAllowed || !isMainPlayerPlaying) return; bgAudio.play() .then(() => console.log("背景音乐开始播放")) .catch(e => console.warn("背景音乐播放失败:", e.message)); } // 暂停背景音乐的函数 function pauseBGMusic() { bgAudio.pause(); console.log("背景音乐已暂停"); } // 重置背景音乐到开始 function resetBGMusic() { bgAudio.currentTime = 0; } // 主播放器状态跟踪 let isMainPlayerPlaying = false; let mainAudioElement = null; // 查找主播放器的音频元素 function findMainAudioElement() { mainAudioElement = document.querySelector('audio[amplitude-song-index="0"]') || document.querySelector('audio[amplitude-main-player="true"]'); if (mainAudioElement) { setupMainAudioListeners(); } else { setTimeout(findMainAudioElement, 1000); } } // 设置主音频元素监听器 function setupMainAudioListeners() { console.log("已找到主播放器音频元素,设置监听器..."); // 监听播放事件 mainAudioElement.addEventListener('play', function() { isMainPlayerPlaying = true; console.log("主播放器开始播放"); tryPlayBGMusic(); }); // 监听暂停事件 mainAudioElement.addEventListener('pause', function() { isMainPlayerPlaying = false; console.log("主播放器暂停"); pauseBGMusic(); }); // 监听结束事件 mainAudioElement.addEventListener('ended', function() { isMainPlayerPlaying = false; console.log("主播放器播放结束"); pauseBGMusic(); }); } // 覆盖Amplitude的播放控制方法 function overrideAmplitudeControls() { if (!window.Amplitude) { setTimeout(overrideAmplitudeControls, 500); return; } console.log("覆盖Amplitude控制方法..."); // 保存原始方法 const originalPlay = Amplitude.play; const originalPause = Amplitude.pause; const originalPlayNow = Amplitude.playNow; const originalPlaySongAtIndex = Amplitude.playSongAtIndex; // 覆盖play方法 Amplitude.play = function() { const result = originalPlay.apply(this, arguments); isMainPlayerPlaying = true; tryPlayBGMusic(); return result; }; // 覆盖pause方法 Amplitude.pause = function() { const result = originalPause.apply(this, arguments); isMainPlayerPlaying = false; pauseBGMusic(); return result; }; // 覆盖playNow方法 Amplitude.playNow = function(song) { const result = originalPlayNow.apply(this, arguments); isMainPlayerPlaying = true; resetBGMusic(); tryPlayBGMusic(); return result; }; // 覆盖playSongAtIndex方法 Amplitude.playSongAtIndex = function(index) { const result = originalPlaySongAtIndex.apply(this, arguments); isMainPlayerPlaying = true; resetBGMusic(); tryPlayBGMusic(); return result; }; } // 处理用户交互以获取播放权限 function handleUserInteraction() { document.removeEventListener('click', handleUserInteraction); document.removeEventListener('touchstart', handleUserInteraction); bgAudio.play() .then(() => { bgAudioAllowed = true; bgAudio.pause(); // 获取权限后立即暂停 console.log("已获得背景音乐播放权限"); }) .catch(e => { console.warn("自动播放被阻止:", e.message); }); } // 初始化 function init() { // 1. 设置用户交互监听 document.addEventListener('click', handleUserInteraction); document.addEventListener('touchstart', handleUserInteraction); // 2. 查找主音频元素 findMainAudioElement(); // 3. 覆盖Amplitude控制方法 overrideAmplitudeControls(); // 4. 监听Amplitude事件 document.addEventListener('amplitude-init', function() { console.log("Amplitude初始化完成"); overrideAmplitudeControls(); findMainAudioElement(); }); // 5. 直接监听播放/暂停按钮 const playPauseButton = document.getElementById('play-pause'); if (playPauseButton) { playPauseButton.addEventListener('click', function() { // 状态会在Amplitude的控制方法中处理 console.log("播放/暂停按钮点击"); }); } } // 开始初始化 init(); });