Javascript:将flag设置为false时,简单动画不会停止
Javascript: Simple animation doesnt stop when setting flag to false
我正在尝试在"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/
动画不会在mouseup
上停止,因为update
函数仍在定期运行。你可以按照Joseph说的去做,或者在你不需要的时候取消更新。requestAnimationFrame
返回一个你可以保存的ID,如下所示:
requestID = window.requestAnimationFrame(callback);
然后你可以这样取消它:
cancelAnimationFrame(requestID);
相关文章:
- 创建一致的简单横幅文本动画
- 我应该如何对这个简单的javascript动画进行逆向工程
- 简单的Jquery菜单按钮重复动画,我怎么能停止这个
- jQuery:使用:hover的简单动画
- Javascript简单动画循环
- 简单的jQuery淡入淡出动画 - 如何显示/隐藏DIVS
- HTML/CSS/JS 世界地图与简单的动画
- 使简单的js小提琴动画在按钮单击而不是页面加载时开始
- 如何在动画画布中乘以简单形状的颜色
- 如何在jQuery中做这个简单的动画
- 非常简单的Jquery动画优化
- 使用Jquery动画进行简单的css更改
- Javascript:将flag设置为false时,简单动画不会停止
- 我试图使用jquery或javascript回调一个简单的动画
- 如何动画化“;简单jquery过滤”;只使用css
- 简单的javascript动画问题
- timeout函数,用于使用canvas的简单html 5 javascript动画
- “非常简单的滑块”(Very Simple Slider)动画因少于三个幻灯片而中断
- 有没有一种简单的方法可以移动用Zepto制作动画的隐藏图像
- 我试图在jquery做简单的动画功能