如何防止我的坦克失控?

时间:2012-05-20 03:35:35

标签: javascript html5 canvas

我有一个移动坦克:http://www.exeneva.com/html5/movingTankExample

使用箭头键移动水箱。目前没有物理或轮换。

一个问题是,如果你太快按箭头键,坦克就不再以瓷砖为中心,动画就会搞砸了。我想限制油箱,以便按键不会影响油箱,而它当前处于运动/动画框架中。我该怎么做?

1 个答案:

答案 0 :(得分:2)

这是一个解决方案。每个箭头按下你没有按照设定的次数运行动画,所以我改变了setTimeout来这样做。作为一个注释你可能想要实现一些东西,当玩家按住箭头键时,它只调用函数,如果tankState被“停止”,这样你不会最终调用很多函数结束了坦克向某个方向射击。

function moveTank(dir) {
var steps=0, int = setInterval(function() {
steps++;
tankState = "moving";
if (dir == "up") {
tankMoveY = -4;
} else if (dir == "down") {
tankMoveY = 4;
} else if (dir == "left") {
tankMoveX = -4;
} else if (dir == "right") {
tankMoveX = 4;
}
tankX += tankMoveX;
tankY += tankMoveY;
animateMovement();
drawScreen();
if(steps==5){//set this to the number of steps you want the animation to run.
clearInterval(int);
tankMoveX = 0;
tankMoveY = 0;
tankState = "stopped";
}
},120);
}