我想动画我的太空入侵者的腿,但我遇到了settimeout的问题。
jsfiddle:http://jsfiddle.net/7Ldr8/10/
// Leg right
invadersContext.fillRect(init_x + pixel*5,init_y + pixel,pixel,pixel);
invadersContext.fillRect(init_x + pixel*5,init_y + pixel*2,pixel,pixel);
setTimeout(function(){invadersContext.fillRect(init_x + pixel*6,init_y + pixel*2,pixel,pixel);}, 3000);
setTimeout(function(){invadersContext.clearRect(init_x + pixel*6,init_y + pixel*2,pixel,pixel);}, 1500);
我不明白为什么动画不会发生。显然我正在以错误的方式使用setTimeout。
有人在乎解释原因吗?
谢谢!
答案 0 :(得分:0)
setTimeout
等待 n毫秒,然后只运行一次回调函数。您需要使用setInterval
代替:
var leftOrRight = "left";
setInterval(function(){
if(leftOrRight == "left"){
invadersContext.fillRect(init_x + pixel * 6, init_y + pixel * 2, pixel, pixel);
leftOrRight = "right";
}else{
invadersContext.clearRect(init_x + pixel * 6, init_y + pixel * 2, pixel, pixel);
leftOrRight = "left";
}
}, 1000);
答案 1 :(得分:0)
问题是你的延迟同步,第二个覆盖第一个。而不是同时调用你需要像这样交替:
var draw = true;
setInterval(function() {
draw ?
invadersContext.fillRect(init_x + pixel * 6, init_y + pixel * 2, pixel, pixel) :
invadersContext.clearRect(init_x + pixel * 6, init_y + pixel * 2, pixel, pixel);
draw = !draw;
}, 1000);