var canvas=document.getElementById('canvas');
var c=canvas.getContext('2d');
let x = canvas.width/2;
let position_zero=canvas.width-700;
let position_end=canvas.width-30;
let y = canvas.height-30;
let position_end_y= canvas.height-30; // granica dolna canvas
var Keys = {
up: false,
down: false,
left: false,
right: false
};
let position_zero_y=canvas.height-370; //granica górna canvas
let pos=400;
let speed_variable=20;
let initX=Math.random()*2;
let initY=0;
let initR=1;
let initZ=Math.random();
function ball(){
c.fillStyle='blue';
c.fillRect(x,y,50,30);
}
setInterval(function() {
c.clearRect(0,0, canvas.width,canvas.height);
ball();
rock();
rock1();
position();
},10);
function position(){
if (x>position_end){ // koniec ruchu na osi x
x=670;
}
if (x<position_zero){ // początek ruchu na osi x
x=0;
}
if (y<position_zero_y){ // początek ruchu na osi y
y=0;
}
if (y>position_end_y){ // koniec ruchu na osi y
y=370;
}
}
window.addEventListener('keydown', change_key_down,true);
window.addEventListener('keyup', change_key_up,false);
function change_key_down(e){
switch(e.keyCode){
case 39:
x+=speed_variable;
break;
case 37:
x-=speed_variable;
break;
case 38:
y-=speed_variable;
break;
case 40:
y+=speed_variable;
break;
}
}
function change_key_up(keyup){
switch(keyup.keyCode){
case 39:
break;
case 37:
break;
case 38:
break;
case 40:
break;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="gra.css">
<script src="control.js"></script>
<script src="ball.js"></script>
<script src="rock.js"></script>
<title>GRA</title>
</head>
<body onload="start">
<canvas id="canvas" width="700" height="400"></canvas>
</body>
</html>
Kodzik działa, lecz chodzi mi o natychmiastową reakcję po wciśnięciu zmiany klawisza (kwadracik nie może na chwilę stanąć w miejscu). Czy da się to zrobić, czy jest to kwestia ustawień przeglądarki (używam Chroma) ?