这是一个来自`chatgpt`的方案,我修改了并测试可行
let isAnimating = false; // 用于标记是否正在渲染场景 const myButton = document.getElementById('myButton'); myButton.addEventListener('click', function() { // 如果当前正在渲染场景,则不执行任何操作 if (isAnimating) { return; } isAnimating = true; // 标记为正在渲染场景 const intervalId = setInterval(function() { // 让场景通过y轴旋转 scene.rotation.y += 0.008; render(); }, 16.7); // 每秒渲染60帧,即每帧间隔16.7毫秒 // 在按钮上添加一个标记,以便在下次点击时停止渲染 myButton.dataset.intervalId = intervalId; }); // 在按钮上添加一个“停止”事件处理程序,以便在点击时停止渲染 const mouseup = document.getElementById('mouseup'); mouseup.addEventListener('mouseup', function() { console.log(1111111) const intervalId = myButton.dataset.intervalId; if (intervalId) { clearInterval(intervalId); isAnimating = false; // 标记为停止渲染场景 myButton.dataset.intervalId; } });