¿Hay alguna manera de evitar la ejecución de onComplete si la animación fue
to() y el valor ya se cumplió)? Supongo que onInterrupt podría usarse para eso. ¿Si es así, cómo?
ACTUALIZAR:
Aquí hay un ejemplo de jsfiddle: https://jsfiddle.net/2f1jbwra/2/
jsfiddle con kill() : https://jsfiddle.net/2f1jbwra/4/
jsfiddle con overwrite: "auto" : https://jsfiddle.net/2f1jbwra/5/
Las interpolaciones interrumpidas (y las líneas de tiempo) no llaman a su devolución de llamada onComplete porque se han detenido. Así que solo asegúrese de que sus preadolescentes eliminen a los que deberían usar overwrite: 'auto' o overwrite: true .
Si en realidad no está interrumpiendo la interpolación, puede eliminar la devolución de llamada onComplete usando .addEventListener() con null como segundo parámetro.
Si está interrumpiendo la interpolación y necesita conectarse a ese evento, puede usar la devolución de llamada onInterrupt pero eso no lo ayudaría en este caso.
También vale la pena señalar que no se activará ningún evento (incluido onComplete ) si la interpolación nunca se inició en primer lugar. Dicho esto, las interpolaciones donde los valores inicial y final son los mismos (como la situación que describe en la pregunta) aún se ejecutan normalmente. Es solo que no puede ver ningún cambio porque ninguno ocurre visualmente.
Para su información, es más probable que obtenga respuestas aún más rápidas y comentarios adicionales/información útil y enfoques si hace preguntas específicas de GSAP como esta en los foros de GSAP .