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

173
Vistas
¿Cómo puedo detectar un clic en el fondo de una ventana de JavaScript?

Estoy tratando de hacer un juego de JavaScript en el laboratorio de juegos https://code.org para aumentar el tiempo de reacción y la precisión, y no puedo encontrar la manera de detectar un clic en el fondo para disminuir las vidas. Aquí está el código que tengo hasta ahora:

 1 var score = 0; 2 var lives = 3; 3 var target1 = createSprite(randomNumber(50, 350), randomNumber(50, 350)); 4 target1.setAnimation("Target1"); 5 target1.scale = 0.5; 6 target1.setCollider("circle"); 8 var target2 = createSprite(randomNumber(50, 350), randomNumber(50, 350)); 9 target2.setAnimation("Target2"); 10 target2.scale = 0.5; 11 target2.setCollider("circle"); 12 13 function draw() { 14 scoreboard(); 15 targetClick(); 16 life(); 17 drawSprites(); 18 } 19 20 function scoreboard() { 21 background("black"); 22 textSize(20); 23 text("Lives: " + lives, 10, 375, 100, 100); 24 text("Score: " + score, 10, 10, 100, 100); 25 } 26 function targetClick() { 27 if (mousePressedOver(target1)) { 28 target1.x = randomNumber(50, 350); 29 target1.y = randomNumber(50, 350); 30 score = score + 1; 31 } 32 if (mousePressedOver(target2)) { 33 target2.x = randomNumber(50, 350); 34 target2.y = randomNumber(50, 350); 35 score = score + 1; 36 } 37 } 38 function life() { 39 if (mousePressedOver(mousePressedOver(background)) { 40 lives = lives - 1; 41 } 42 if (lives <= 0) { 43 target1.destroy(); 44 target2.destroy(); 45 textSize(50); 46 text("Game Over!", 10, 150); 47 } 48 }

La línea 39 es donde la necesito.

¿Alguien puede ayudar?

Editar: después de algunas pruebas, me di cuenta de que podía detectar un clic, en general, como mousePressed() , también podía usar mouseX y mouseY para ver si estaba en el área de uno de los objetivos y si no era así, yo podría quitar una vida.

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

0

MousePressedOver funciona si se presiona el mouse sobre el elemento. De modo que los usuarios pueden mantener presionado el botón derecho y simplemente moverse por el lienzo para obtener puntos. Para evitar eso y resolver el problema de la disminución de vidas, puede usar la combinación que usamos a menudo para los eventos de clic en Game Lab. mouseWentDown() && mouseIsOver(target1) (&& significa "y"). Esto se activa cuando se hace clic con el mouse y está sobre el objetivo. Para disminuir las vidas, simplemente puede agregar ! antes del mouseover() ya que es el operador not de JavaScript. Básicamente significa "disparar cuando se hace clic con el mouse y cuando no está sobre el objetivo". Aquí está el código completo;

 var score = 0; var lives = 3; var target1 = createSprite(randomNumber(50, 350), randomNumber(50, 350)); target1.setAnimation("Target1"); target1.scale = 0.5; target1.setCollider("circle"); var target2 = createSprite(randomNumber(50, 350), randomNumber(50, 350)); target2.setAnimation("Target2"); target2.scale = 0.5; target2.setCollider("circle"); function draw() { scoreboard(); targetClick(); life(); drawSprites(); } function scoreboard() { background("black"); textSize(20); text("Lives: " + lives, 10, 375, 100, 100); text("Score: " + score, 10, 10, 100, 100); } function targetClick() { if (mouseWentDown() && mouseIsOver(target1)) { target1.x = randomNumber(50, 350); target1.y = randomNumber(50, 350); score = score + 1; } if (mouseWentDown() && mouseIsOver(target2)) { target2.x = randomNumber(50, 350); target2.y = randomNumber(50, 350); score = score + 1; } } function life() { if (mouseWentDown()&& !mouseIsOver(target1)&& !mouseIsOver(target2)) { lives = lives - 1; } if (lives <= 0) { target1.destroy(); target2.destroy(); textSize(50); text("Game Over!", 10, 150); } }
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