为什么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);
}
答案 0 :(得分:3)
尝试替换
context.globalAlpha.toFixed(0) === 1
带
context.globalAlpha > 0.95
toFixed将您的值转换为String,这不是您想要的。
答案 1 :(得分:1)
所以,基本上当你有:
i = setInterval(function () {
i
未定义。如同,它甚至不存在。所以当你到达这个部分时
clearInterval(i);
它说,i
?那是什么?现在我认为JS有一些能力可以导出i
是一个变量,但是我猜这是因为你将它传递给另一个内部函数,那就是问题出现的地方发挥作用。
所以
var i = setInterval(function () {
应解决您的问题