无限设置间隔,即使它应该已经清除
Infinite setInterval even though it should've cleared?
为什么 setInterval 不自行清除?...每循环globalAlpha
多 0.1。然而,即使它在 1 处停止递增。循环只是继续??
我的完整代码在文件底部:https://github.com/GunZi200/Memory-Colour/blob/master/test.js
function secondCanvasFirst(){
//if (collides(secondCanvas, exx, eyy)) {
console.log("true");
var j = 0,
i = setInterval(function () {
context.globalAlpha = j;
context.fillStyle = '#F8F8FF';
context.fillRect(0, 0, x, y);
j += 0.1;
console.log(context.globalAlpha);
if (context.globalAlpha.toFixed(0) === 1) {
clearInterval(i);
userTurn = true;
b_canvas.addEventListener('click', clickEvent, false);
alert("hi");
second = true;
game_interface();
}
}, 100);
}
var clickEvent1 = function clickEvent1(e) {
new FastClick.attach(document.body);
console.log("clickevent1");
exx = e.offsetX;
eyy = e.offsetY;
secondCanvasFirst();
}
if (b_canvas && b_canvas.getContext) {
b_canvas.addEventListener('click', clickEvent1, false);
FastClick.attach(document.body);
}
尝试替换
context.globalAlpha.toFixed(0) === 1
跟
context.globalAlpha > 0.95
toFixed 将您的值转换为字符串,这不是您想要的。
所以,基本上当你有:
i = setInterval(function () {
i
未定义。就像在里面一样,它甚至不存在。所以当你到达这部分时
clearInterval(i);
它说,i
?什么?现在我认为 JS 有一些能力可以推导出i
是一个变量,但我猜这是因为您将其传递给另一个内部函数,这就是问题发挥作用的地方。
所以
var i = setInterval(function () {
应该解决你的问题
相关文章:
- 清除设置超时之前的间隔将不起作用
- 清除间隔在 6 个时间设置后不起作用间隔
- jquery cookie,在清除浏览器历史记录后仍然设置
- 清除超时多次设置超时
- 通过网页清除内容脚本设置的间隔
- 如何设置颜色'清除'转换为RGB或HEX
- 如何在 JQuery 中清除重复设置的 setInterval 函数
- JS:不能停止设置间隔与清除间隔
- 奇怪的设置超时清除行为与jQuery AJAX
- 如何清除间隔并重新设置
- 设置超时和清除交替点击超时
- 设置间隔不清除用户离开窗口
- 设置间隔和设置超时清除
- 设置超时仍然触发,尽管清除超时
- 无限设置间隔,即使它应该已经清除
- 清除消息 jQuery 延迟设置超时
- 动态设置、取消设置和清除全局变量
- 当“下拉选择”字段设置为某个值时,清除文本输入字段
- 清除设置间隔不起作用
- 清除“设置超时Javascript”