Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

275
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!