Javascript:将标志设置为 false 时简单动画不会停止

标签 javascript html5-canvas

我试图在“mousedown”上触发动画,并在释放鼠标后立即停止它。

在“mousedown”上,我将一个标志设置为 true,这设置了单击相应按钮的动画的条件。问题出在“mouseup”上,我将标志设置为 false 但动画不会停止。我的控制台中没有收到任何错误,因此这似乎是一个基于逻辑的错误。

我的错误是什么?我该如何解决这个问题?

https://jsfiddle.net/b4kn4w3g/2/

基本代码:

   function eventBundle(e) {
     if (e.target !== e.currentTarget) {
       if (e.target == parent.children[0]) {
         isDown = true;
         amount = "reduce";
       } else if (e.target == parent.children[1]) {
         isDown = true;
         amount = "increase";
       }
     }
     e.stopPropagation();
   }
   window.addEventListener("mouseup", function(){
    isDown = false;
    amount = "neutral";
    });
   function holdStuff() {
     if (isDown == true && amount == "increase") {
       maxValue += 100;
     } else if (isDown == true && amount == "reduce") {
       maxValue -= 100;
     }
     requestAnimationFrame(holdStuff)
   }

最佳答案

maxValue = minValue 添加到您的 mouseup 事件监听器。问题在于,您的更新函数随着 minValue += 5;minValue -= 5; 增量(值 5)增加或减少。当您将最大值增加或减少 100 时,它最终必须以 5 的增量达到该值。将 maxValue 设置为当前的 minValue 会停止当前状态的更改。

window.addEventListener("mouseup", function(){
    maxValue = minValue;
    isDown = false;
    amount = "neutral";
});

https://jsfiddle.net/nexrytes/

关于Javascript:将标志设置为 false 时简单动画不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34519543/

相关文章:

javascript - 从本地路径加载图像并将其绘制在 Canvas 上

html5-canvas - HTML5 Canvas 笔触未消除锯齿

javascript - Canvas 图像质量问题

javascript - 根据共同属性合并 2 个 json 数组对象

javascript - 将 HTML 遍历到 JSON

javascript - 在html中播放wav音频文件的移动波形

javascript - HTML 5 Canvas |根据文本行数调整 Canvas 的高度?

javascript - 在 Javascript 中单击之前执行按钮方法

javascript - 如何备份 html 5 本地存储数据

javascript - 聊天窗口问题