Lorsque je déplace l'objet, il est lent et ne bouge pas en diagonale, seulement en haut, en bas, à droite et à gauche.Comment déplacer un objet avec le clavier en javascript
Comment puis-je résoudre ce problème, est-ce une bonne façon de commencer ou devrais-je le faire autrement?
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext('2d');
canvas.width = 600;
canvas.height = 600;
var object = {
height: 40,
width: 40,
x: 10,
y: 10,
color: "#FF0000"
}
document.addEventListener('keydown', function(event) {
//left
if(event.keyCode == 37) {
object.x -= 1;
}
//top
else if(event.keyCode == 38) {
object.y -= 1;
}
//right
else if(event.keyCode == 39) {
object.x += 1;
}
//bottom
else if(event.keyCode == 40) {
object.y += 1;
}
});
function renderCanvas(){
ctx.fillStyle = "#000000";
ctx.fillRect(0, 0, 600, 600);
}
function renderObject(){
ctx.fillStyle = "#FF0000";
ctx.fillRect(object.x, object.y, object.width, object.height);
}
function run(){
renderCanvas();
renderObject();
}
setInterval(run, 10);
Voici un jsfiddle
Je suis un peu un débutant en javascript et j'ai vraiment besoin d'aide à ce sujet;)
Vous pourriez animer le mouvement avec des images clés js ou css, de sorte qu'il se déplace en diagonale. Mais vous devrez faire une vérification si 2 flèches sont abaissées d'une manière ou d'une autre. Comme si (event.keyCode == 37 ET event.keyCode == 40) ... je ne sais pas si cela fonctionne bien. Sinon, vous devez définir un drapeau lorsqu'une flèche est enfoncée et vérifier si le drapeau est actif avec une autre flèche ... – Medda86
Essayez de sortir le 'else if' et de le remplacer par ifs (sinon les touches sont toujours mutuellement exclusives). Je ne suis pas sûr si cela fonctionne bien ... – nils