Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

165
Visualizações
Image change upon collision detection in HTML canvas

I am working on a simple game using HTML canvas and JavaScript.

The canvas is as follows: The canvas part

When the colored ball hits the sides of the image (img 1 and 2 in the above picture), its color will change randomly.

Now, I further want to add a function to it. What I want is that when the colored ball hits the side of the image, I want to change img 1 and 2. How can I do that in my code? I have done some research here and on YouTube but still have no idea. My code is as follows:

var canvas = document.getElementById("canvas_bb84_1");
canvas.width = 1000;
var c = canvas.getContext("2d");

//Draw the image to the canvas
var x = 220;
var radius = 15;
var color = "#0095DD";
function draw() {
  c.drawImage(p_fil, 100, 30, 100, 100); //img1
  c.drawImage(p_fil_flip, 810, 30, 100, 100); //img2
  c.drawImage(p_det_flip, 10, 30, 100, 100);
  c.drawImage(p_det, 900, 30, 100, 100);

  //Draw the ball
  c.beginPath();
  c.arc(x, 80, radius, 0, Math.PI * 2, false);
  c.fillStyle = color;
  c.fill();
  c.closePath();
}

//Update the animation of the ball and collision detection
var dx = 4;
function update() {
  if (x + radius > 820 || x - radius < 190) {
      dx = -dx;
      color = "#" + ((1 << 24) * Math.random() | 0).toString(16);
  } 
  x += dx;
}

//Initialize the images
var p_det = new Image();
var p_det_flip = new Image();
var p_fil = new Image();
var p_fil_flip = new Image();

//Animate
function animate() {
  p_det.src = "photon_detector.jpg";
  p_det_flip.src = "photon_detector_flip.jpg"
  p_fil.src = "p_filter_02.jpg";
  p_fil_flip.src = "p_filter_02_flip.jpg";

  window.requestAnimationFrame(animate);
  c.clearRect(0, 0, canvas.width, canvas.height);

  draw();
  update();
}

animate();
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda