Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

167
Vistas
¿Por qué mi reproductor se mueve cada vez más rápido cuando uso los controles? Juego web HTML

Estoy creando un juego web HTML5 y estoy en el proceso de hacer que el jugador se mueva. No estoy usando ningún motor de juego, solo HTML puro, CSS y JavaScript. Mi problema es que cada vez que cargo mi juego, comienza bien donde puedo moverme a velocidades normales, pero si me muevo hacia adelante y hacia atrás varias veces, el jugador comienza a acelerar y si sigo haciendo esto, la velocidad se vuelve insoportable. velocidades No tengo idea de lo que está pasando. La forma en que funciona mi código es cuando se presiona la tecla d y luego en el objeto presionado teclas D se establece en verdadero en lugar de falso,

 let keysPressed = { 'd': false, 'a': false, 'w': false, 's': false, }

Luego, ejecuta una función que mueve al jugador.

 function move() { if (keysPressed['d'] == true) { // check if its right let player = document.querySelector('.player'); var id = setInterval(frame, 20); function frame() { if (keysPressed['d'] == false) { clearInterval(id); } else { player.style.left = player.offsetLeft + 2 + 'px'; } } } if (keysPressed['a'] == true) { // check if its left let player = document.querySelector('.player'); var id = setInterval(frame, 20); function frame() { if (keysPressed['a'] == false) { clearInterval(id); } else { console.log(player.offsetLeft) player.style.left = player.offsetLeft - 2 + 'px'; } } }

}

Sé que no es el código más limpio, pero solo quiero corregir este error antes de abordarlo.

Gracias

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Está llamando a setInterval muchas veces, lo que está agravando y causando el síntoma que está describiendo. Creo que solo necesita llamar a setInterval una vez, y luego simplemente cambiar las variables izquierda/derecha dependiendo de la pulsación de tecla... algo como

 let intervalID, player = document.querySelector('.player'), dir, offset, isMoving = false; function changeDirection(keysPressed) { if (!isMoving) move(); if (keysPressed['d']) { dir = 'left'; offset = 'offsetLeft'; } else if (keysPressed['a']) { dir = 'right'; offset = 'offsetRight'; } } function move() { // called just once if (isMoving) return; isMoving = true; intervalID = setInterval(function() { player.style[dir] = (+player[offset] + 2) + 'px'; }, 20); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda