// 确保在DOM加载完成后执行 window.addEventListener('DOMContentLoaded', function() { console.log('DOMContentLoaded - Record.js executing'); // 录制相关全局变量 window.isRecording = false; window.isPlaying = false; window.recordedActions = []; window.recordingStartTime = 0; // 获取录制和回放按钮 const recordBtn = document.getElementById('recordBtn'); const playbackBtn = document.getElementById('playbackBtn'); const status = document.getElementById('status'); // 调试信息 console.log('Record.js loaded'); console.log('recordBtn:', recordBtn); console.log('playbackBtn:', playbackBtn); console.log('status:', status); // 录制按钮点击事件 - 支持鼠标和触摸事件 function toggleRecording() { console.log('toggleRecording called, current isRecording:', window.isRecording); if (window.isPlaying) { alert('正在回放,不能录制'); return; } if (window.isRecording) { // 停止录制 window.isRecording = false; recordBtn.textContent = '开始录制'; status.innerHTML = `
录制完成,共记录 ${window.recordedActions.length} 个操作
`; console.log('Recording stopped, actions:', window.recordedActions); } else { // 开始录制 window.isRecording = true; window.recordedActions = []; window.recordingStartTime = Date.now(); recordBtn.textContent = '停止录制'; status.innerHTML = `开始录制...
`; console.log('Recording started'); } } console.log('Adding click event listener to recordBtn'); recordBtn.addEventListener('click', toggleRecording); // 录制按钮 - 触摸事件 console.log('Adding touchstart event listener to recordBtn'); recordBtn.addEventListener('touchstart', (e) => { console.log('Touchstart event on recordBtn'); e.preventDefault(); // 防止默认行为 toggleRecording(); }); // 回放按钮点击事件 - 支持鼠标和触摸事件 function startPlayback() { console.log('startPlayback called, recordedActions:', window.recordedActions); if (window.isRecording) { alert('请先停止录制'); return; } if (window.recordedActions.length === 0) { status.innerHTML = `没有可回放的操作
`; console.log('No actions to playback'); return; } // 保存当前录制状态并禁用录制 const originalRecordingState = window.isRecording; window.isRecording = false; window.isPlaying = true; status.innerHTML = `开始回放...
`; console.log('Starting playback'); // 按时间顺序回放操作 let currentTime = 0; const totalDuration = window.recordedActions[window.recordedActions.length - 1].timestamp; // 执行所有操作 window.recordedActions.forEach((action, index) => { if (index === 0) { // 第一个操作立即执行 console.log('Executing action immediately:', action); controlMotor(action.direction); } else { // 计算与前一个操作的时间差 const prevAction = window.recordedActions[index - 1]; const delay = action.timestamp - prevAction.timestamp; currentTime += delay; console.log('Scheduling action:', action, 'at delay:', currentTime); setTimeout(() => { // 调用控制函数执行操作 console.log('Executing action:', action); controlMotor(action.direction); }, currentTime); } }); // 回放完成后,确保发送停止请求 setTimeout(() => { console.log('Playback completed, sending stop command'); controlMotor('stop'); status.innerHTML = `回放完成
`; console.log('Playback completed'); // 恢复原始录制状态 window.isRecording = originalRecordingState; window.isPlaying = false; }, totalDuration + 2000); // 增加延迟,确保所有动作都已执行 } console.log('Adding click event listener to playbackBtn'); playbackBtn.addEventListener('click', startPlayback); // 回放按钮 - 触摸事件 console.log('Adding touchstart event listener to playbackBtn'); playbackBtn.addEventListener('touchstart', (e) => { console.log('Touchstart event on playbackBtn'); e.preventDefault(); // 防止默认行为 startPlayback(); }); });