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

190
Vistas
¿Cómo hacer que el objeto se mueva en un movimiento triangular en el lienzo de Javascript?

Creé un círculo que quiero animar para que se mueva en un movimiento triangular usando declaraciones if y cambiando las coordenadas y/x, pero todo lo que puedo hacer es ir y venir, así que me preguntaba si alguien ¿podría ayudar?

la función donde estoy cambiando los parámetros x/y se llama "triángulo".

el código js completo:

 var canvas; var ctx; var w = 1000; var h = 600; var allCircles = []; setUpCanvas(); createData(1); animationLoop(); function animationLoop(){ clear(); circlesDrawUpdate(allCircles); requestAnimationFrame(animationLoop); } function circlesDrawUpdate(a){ for(var i=0; i<a.length; i++){ circle(a[i]); triangle(a[i]); } } function createData(num){ for (var i=0; i<num; i++){ allCircles.push({ "x": w/2, "y": h/2, "dx": randn(100), "dy": 3, "r": 50, "c":200+rand(180), "a": 0.5, }) } } function triangle(o){ var i; ox += o.dx; oy += o.dy; if(oy = h){ o.dy *= +1; } if(ox> w || ox < 0){ o.dx *=-1; } } function clear(){ ctx.clearRect(0,0,w,h); } function circle(o){ ctx.beginPath(); ctx.arc(ox,oy,or,0,2*Math.PI); ctx.fillStyle = "hsla("+o.c+", 100%, 50%, "+o.a+")"; ctx.fill(); } function randn(r){ var result = Math.random()*r - r/2; return result; } function randi(r){ var result = Math.floor(Math.random()*r); return result; } function rand(r){ var result = Math.random()*r; return result; } function setUpCanvas(){ canvas = document.querySelector("#myCanvas"); ctx = canvas.getContext("2d"); canvas.width = w; canvas.height = h; canvas.style.border ="5px dashed purple"; } console.log("Module 7 Exercise");
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Es eso lo que quisiste decir con "movimiento triangular"?

 function triangle(o) { ox += o.dx; oy += o.dy; if(oy == h || oy == 0){ o.dy *= -1; } if(ox >= w || ox <= 0){ o.dx *=-1; } }

La razón por la que su círculo siguió yendo y viniendo es porque la primera condición en su función de triángulo, donde asignó valor ('=') en lugar de comparación ('=='). La variable o.dy se ha cambiado a h en cada llamada de función, por lo tanto, el valor y de su círculo siempre fue igual a la altura del lienzo.

Otro problema es que debes multiplicar o.dy por -1 para cambiar de dirección (igual que hiciste en o.dx).

Lo último es verificar ambos lados de su lienzo (0 y h), no solo el inferior (h) (nuevamente, lo mismo que hizo en o.dx)

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