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

276
Visualizações
Canvas clearRect no funciona con Animate

Estoy usando una técnica de líneas de dibujo animadas para crear líneas entre cada uno de mis puntos. Una vez que se activa un punto, quiero que se elimine un punto anterior. Configuré clearRect fuera de mi intervalo pero no elimina la línea anterior. En mi código anterior (antes de que se creara setInterval) funcionó perfectamente, ya que al agregar setinterval, no tanto.

Aquí está el guión solo para la creación clara /. Gracias por tu ayuda.

 function draw(st,en){ var c = document.getElementById("map_id"); var ctx = c.getContext("2d"); ctx.clearRect(0, 0, c.width, c.height); ctx.translate(0.5, 0.5); var amount = 0; setInterval(function() { amount += 0.05; // change to alter duration if (amount > 1) amount = 1; ctx.clearRect(0, 0, c.width, c.height); ctx.strokeStyle = "#ccc"; ctx.moveTo(st['x'], st['y']); ctx.lineWidth = 5; // lerp : a + (b - a) * f ctx.lineTo(st['x'] + (en['x'] - st['x']) * amount, st['y'] + (en['y'] - st['y']) * amount); ctx.stroke(); }, 30); }

ACTUALIZAR **** Encontré una publicación sobre mi problema. Dice que necesito incluir beginPath. Lo hice, pero ahora mis líneas parpadean, lo que significa que setInterval no se detiene una vez que se completa.

Por lo tanto, verificar que se complete la línea dibujada para desactivar el intervalo es la solución. Casi ahí.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Tener la solución a mi problema.

Rastreé la cantidad de var para determinar cuándo alcanzó 1 con if (cantidad == 1) window.clearInterval (map_int)

¡Problema resuelto! Vea la solución a continuación

 function draw(st,en){ var c = document.getElementById("map_id"); var ctx = c.getContext("2d"); ctx.clearRect(0, 0, c.width, c.height); ctx.translate(0.5, 0.5); var amount = 0; let map_int = setInterval(function() { amount += 0.05; // change to alter duration if (amount > 1) amount = 1; ctx.beginPath(); ctx.clearRect(0, 0, c.width, c.height); ctx.strokeStyle = "#ccc"; ctx.moveTo(st['x'], st['y']); ctx.lineWidth = 5; // lerp : a + (b - a) * f ctx.lineTo(st['x'] + (en['x'] - st['x']) * amount, st['y'] + (en['y'] - st['y']) * amount); ctx.stroke(); if(amount == 1) window.clearInterval(map_int); }, 15); }
about 4 years ago · Juan Pablo Isaza Relatório
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