如何修改此代码以支持连续点击时动画效果暂停?
时间: 2024-09-28 14:14:21 浏览: 25
要让动画效果在连续点击时暂停,可以使用CSS的`will-change`属性配合JavaScript来实现。当你需要更新元素的位置时,先将其`will-change`属性设为`transform`,然后在改变位置后将这个属性删除,这样浏览器会记住中间状态并在下一次变化时恢复动画。
以下是修改后的部分代码:
```javascript
function moveBlockWithPause(direction) {
let isAnimating = false;
if (!isAnimating) {
// 添加 will-change 属性开始动画
myText.style.willChange = 'transform';
isAnimating = true;
moveBlock(direction);
// 在完成移动后清除 will-change 属性
setTimeout(() => {
myText.style.willChange = '';
isAnimating = false;
}, 500); // 暂停时间,例如500毫秒
} else {
console.log('Animation already in progress, please stop and click again.');
}
}
// 更新事件处理器,添加对isAnimating的检查
buttons.forEach(button => {
button.addEventListener('click', (event) => {
if (!isAnimating) {
moveBlockWithPause(event.target.id);
} else {
console.log("Cannot click while animation is active.");
}
});
});
```
在这个修改版中,我们添加了一个`isAnimating`标志来跟踪当前是否正在动画中。如果动画还未开始,就触发移动并设置`will-change`。动画完成后,通过setTimeout清除`will-change`属性并标记动画结束。当再次点击按钮时,会检查`isAnimating`的状态来判断是否允许启动新动作。
阅读全文