私は移動タンクを持っています:http://www.exeneva.com/html5/movingTankExample
矢印キーを使用してタンクを移動します。現在、物理学や回転はありません。
1つの問題は、矢印キーをすばやく押すと、タンクがタイルの中央に配置されなくなり、アニメーションが台無しになることです。タンクが現在移動/アニメーションフレームにあるときにキーを押してもタンクに影響を与えないように、タンクを制限したいと思います。それ、どうやったら出来るの?
私は移動タンクを持っています:http://www.exeneva.com/html5/movingTankExample
矢印キーを使用してタンクを移動します。現在、物理学や回転はありません。
1つの問題は、矢印キーをすばやく押すと、タンクがタイルの中央に配置されなくなり、アニメーションが台無しになることです。タンクが現在移動/アニメーションフレームにあるときにキーを押してもタンクに影響を与えないように、タンクを制限したいと思います。それ、どうやったら出来るの?
これが1つの解決策です。矢印を押すたびにアニメーションを設定された回数実行していなかったので、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);
}