// methods for key setControlsButton(){ var _this = this; window.onkeydown = function(e) { if (e.keyCode === 65) { _this.x -= _this.velX; } else if (e.keyCode === 68) { _this.x += _this.velX; } else if (e.keyCode === 87) { _this.y -= _this.velY; } else if (e.keyCode === 83) { _this.y += _this.velY; } } } setControlsArrow(){ var _this = this; window.onkeydown = function(e) { if (e.keyCode === 37) { _this.x -= _this.velX; } else if (e.keyCode === 39) { _this.x += _this.velX; } else if (e.keyCode === 38d) { _this.y -= _this.velY; } else if (e.keyCode === 40) { _this.y += _this.velY; } } }llamada de método
player1.draw(); player1.checkBounds(); player1.collisionDetect(); player1.setControlsButton(); player2.draw(); player2.checkBounds(); player2.collisionDetect(); player2.setControlsArrow(); // codeQuiero controlar dos jugadores: teclas de flecha y 'wasd'. Pero solo funciona el último método llamado, es decir, setControlsArrow() . Por favor, ayuda, ¿cómo hacer controles para dos jugadores en vanila js?
Al usar window.onkeydown , está anulando todos los demás detectores de eventos keydown en el objeto de la window . Entonces, cuando llama al segundo método, elimina el oyente que configuró en el primero.
Debe usar window.addEventListener('keydown', function(e){...}); en cambio.