默認情況下,我的畫布的矩形應從左向右移動。當按下鍵時,它應該開始向下移動。畫布:按下按鍵時的奇怪行爲
var canvas = document.getElementById('canvas'),
ctx = canvas.getContext('2d'),
x = 0,
y = 0;
function draw(x_move, y_move) {
requestAnimationFrame(function() {
draw(x_move, y_move);
});
ctx.beginPath();
ctx.rect(x, y, 20, 20);
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "#ffffff";
ctx.fill();
ctx.closePath();
x = x + x_move;
y = y + y_move;
}
draw(1, 0);
document.addEventListener('keydown', function(event) {
//console.log(event.keyCode);
if (event.keyCode == 40) {
draw(0, 1);
}
});
canvas { background-color: red; }
<canvas id="canvas" width="600" height="400"></canvas>
使用上面的代碼,你可能至少發現兩個問題:
- 當按下鍵不放,矩形向下移動,而且還使向右移動。
- 當您多次按下向下鍵時,速度會增加。
我該如何解決這些問題?
在功能形式的行爲修改的keydown和KeyUp事件國家重點對象,並有抽獎功能檢查國家重點對象的狀態。不要在代碼中的任何地方多次調用draw()。 – Chris