Divulgación completa: odio los bucles while. Me ha tomado mucho tiempo entenderlos, pero creo que finalmente entiendo su propósito.
Al principio, cada vez que intentaba escribir mi propio bucle while, After Effects se bloqueaba inmediatamente. Ahora que tengo un poco más de conocimiento sobre lo que salió mal, quiero escribir qué es un bucle while, cuándo usarlo y cómo puedes incorporarlo en tus expresiones de After Effects sin bloquear tu proyecto (recuerda guardarlo regularmente). amigos).
Un bucle while, como su nombre indica, es un bucle que se ejecuta siempre que la expresión sea verdadera.
"Se ejecuta siempre que la expresión sea verdadera": eso suena un poco como una declaración if, ¿no es así?
if (timeSi agrega esta expresión a la propiedad Texto de origen de una capa de texto, encontrará que el texto dice "Texto activado" durante los primeros 2 segundos de su línea de tiempo y no muestra ningún texto después de ese tiempo. Una declaración if verifica si una expresión es verdadera o no, y si lo es, ejecuta el comando una vez, y solo una vez.
Sin embargo, si lo cambia a esta expresión, encontrará que After Effects falla casi de inmediato:
while (timeEsto se debe a que el bucle while es un bucle, por lo que ejecuta el comando repetidamente si la declaración es verdadera. Mientras el cursor esté en los primeros 2 segundos de la línea de tiempo, el bucle while se repetirá infinitamente. ¡No es exactamente lo ideal y ciertamente no es lo que estábamos tratando de lograr! Es importante asegurarse de que su bucle while eventualmente se vuelva falso para evitar estos bucles infinitos.
Para obtener más información sobre las declaraciones if, consulte mi artículo anterior aquí.
bucles while versus bucles for
Bien, es importante tener en cuenta que no se deben utilizar bucles while como declaraciones if. Pero existen otros tipos de bucles que podemos utilizar para crear expresiones. ¿En qué se diferencia un bucle while de un bucle for, por ejemplo?
Un bucle for funciona con 3 argumentos y es ideal cuando sabes cuántas veces necesitas repetir tus comandos.
Tome este ejemplo, generando números aleatorios:
//variables let counter = 0; let num = 0; let numArray = []; //For loop for (let i = 0; time >= i/2; i ) { seedRandom(counter, timeless = true); num = Math.floor(random(1, 6)); numArray.push(num); counter } //return numArray[counter - 1]Después de configurar mis variables, el ciclo comienza con let i = 0, configurando el primer argumento que se ejecuta una vez. Luego, time >= i/2 establece con qué frecuencia se debe ejecutar el bucle. Configurar el bucle de esta manera significará que el bucle se ejecutará dos veces por segundo, porque el tiempo debe ser mayor o igual a la mitad de i. Finalmente, el tercer argumento lo ejecutaré cada vez después de ejecutar el ciclo. En este caso, el valor de i aumenta en 1.
Al ejecutar esta expresión nuevamente en la propiedad Texto de origen de una capa de texto, se mostrará un número aleatorio entre 1 y 5 dos veces por segundo.
Para obtener más información sobre los bucles for, consulta mi artículo anterior aquí.
Un bucle while se utiliza mejor cuando no sabes cuántas veces necesitarás ejecutar tu bucle. Debido a esto, descubrí que no funcionan bien con expresiones que involucran tiempo. Los bucles tipo for funcionan muy bien, ya que te atrapan en esos molestos bucles infinitos.
Entonces, ¿cuándo deberíamos usar bucles while?
Cuándo usar bucles while
Teniendo todo esto en cuenta, se debe utilizar un bucle while en estas condiciones:
Recientemente encontré un uso para esto en After Effects, mientras trabajaba en mi proyecto de generador de números aleatorios.
Veamos el siguiente código:
//variables let counter = 0; let num = 0; let numArray = []; //For loop for (let i = 0; time >= i/2; i ) { seedRandom(counter, timeless = true); num = Math.floor(random(1, 6)); //While loop inside of For loop while (num == numArray[counter - 1]) { num = Math.floor(random(1, 6)); } numArray.push(num); counter } //return numArray[counter - 1]
En este caso, el bucle while verifica si el valor actual de num es igual al valor anterior, almacenado en la matriz numArray. Si lo hace, genera un nuevo número aleatorio entre 1 y 5. El bucle se ejecutará siempre que num y el número anterior almacenado en la matriz sean iguales. Sin embargo, una vez que los números no coinciden, el ciclo while finaliza y la expresión puede continuar con la siguiente línea de código.
Porque puede que tenga que generar un nuevo número aleatorio más de una vez, una declaración if no funciona aquí.
Y como no sé cuántas veces tendré que actualizar el número aleatorio, el número de bucles también es un misterio: así que un bucle for tampoco sirve aquí.
Por lo tanto, un bucle while es mi mejor opción. Se ejecutará tantas veces como lo necesite, hasta que el argumento que contiene sea falso, lo que ciertamente sucederá siempre que la función random() genere un número que no coincida con el anterior.
En conclusión, es probable que los bucles while sean una herramienta poco común en su cinturón de expresión de After Effects. Sin embargo, es útil aprenderlos, en casos en los que los sospechosos habituales pueden no ser adecuados.
¿Te resultó útil? ¿Tiene un ejemplo del uso de un bucle while en su proyecto? ¿Me equivoqué en algo? Por favor déjame un comentario y házmelo saber.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3