input.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. class InputHandler {
  2. constructor() {
  3. this.keys = {
  4. a: false,
  5. A: false,
  6. d: false,
  7. D: false,
  8. w: false,
  9. W: false,
  10. s: false,
  11. S: false,
  12. Shift: false,
  13. ArrowLeft: false,
  14. ArrowRight: false,
  15. ArrowUp: false,
  16. ArrowDown: false
  17. };
  18. this.init();
  19. }
  20. init() {
  21. window.addEventListener('keydown', (e) => {
  22. if (this.keys.hasOwnProperty(e.key)) {
  23. e.preventDefault();
  24. this.keys[e.key] = true;
  25. }
  26. });
  27. window.addEventListener('keyup', (e) => {
  28. if (this.keys.hasOwnProperty(e.key)) {
  29. e.preventDefault();
  30. this.keys[e.key] = false;
  31. }
  32. });
  33. }
  34. isMovingLeft() {
  35. return this.keys.a || this.keys.A || this.keys.ArrowLeft;
  36. }
  37. isMovingRight() {
  38. return this.keys.d || this.keys.D || this.keys.ArrowRight;
  39. }
  40. isJumping() {
  41. return this.keys.w || this.keys.W || this.keys.ArrowUp;
  42. }
  43. isShiftPressed() {
  44. return this.keys.Shift;
  45. }
  46. isCrouching() {
  47. return this.keys.s || this.keys.S || this.keys.ArrowDown;
  48. }
  49. }
  50. const input = new InputHandler();