Soy supernuevo en animaciones javascript. Acabo de descubrir cómo agregar el segundo movimiento a mi animación. Cuando se ejecuta la función funk() , la bola baja hacia la derecha. Cuando activa la función funktre() , la pelota va a su posición inicial marginTop pero mantiene su posición marginLeft . ¿Por qué vuelve a la cima? Quiero que la segunda animación, funktre() , mueva la bola desde la posición final de funk() .
const ball = document.querySelector("#en"); ball.addEventListener("click", funk); function funk() { let id = null; let position = 0; clearInterval(id); id = setInterval(funkto, 5); function funkto() { if (position == 450) { clearInterval(id); funktre(); // sett en ny funksjon her } else { stop(); position++; ball.style.marginLeft = position + "px"; ball.style.marginTop = position + "px"; } } }; function stop() { ball.removeEventListener("click", funk); }; function funktre() { let idd = null; let pos = 0; clearInterval(idd); idd = setInterval(funkfire, 5); function funkfire() { if (pos == 200) { clearInterval(idd); // ny funksjon her } else { pos++; ball.style.marginTop = pos + "px"; } } }"Quiero que la segunda animación, funktre, mueva la bola desde la posición final de funk()".
Entonces no deberías inicializar su posición inicial en cero, sino en su posición actual .
function funktre() { let idd = null; let pos = parseInt(ball.style.marginTop); // set the initial pos to current pos clearInterval(idd); idd = setInterval(funkfire, 5); function funkfire() { if (pos == 200) { clearInterval(idd); // ny funksjon her } else { pos++; ball.style.marginTop = pos + "px"; } } }Si tiene la intención de programar más animaciones, o incluso un videojuego, sugeriría almacenar la posición superior/izquierda de la bola en una variable global (a la que podría acceder desde cualquier ámbito).