«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > After Effects: циклы while

After Effects: циклы while

Опубликовано 6 ноября 2024 г.
Просматривать:780

After Effects: While Loops

Содержание

  • Введение
  • циклы while и операторы if
  • циклы while против циклов for
  • Когда использовать циклы while
  • Заключение

Введение

Полное раскрытие: я ненавижу циклы while. Мне потребовалось много времени, чтобы разобраться в них, но, кажется, я наконец понял их цель.

Начнем с того, что каждый раз, когда я пытался написать собственный цикл while, After Effects немедленно вылетал. Теперь, когда у меня есть немного больше знаний о том, что пошло не так, я хочу описать, что такое цикл while, когда его использовать и как можно включить его в выражения After Effects, не разрушая проект (не забывайте регулярно сохранять близкие).

Циклы while против операторов if

Цикл while, как следует из названия, представляет собой цикл, который выполняется до тех пор, пока выражение истинно.

«Выполняется, пока выражение истинно» — это немного похоже на оператор if, не так ли?

if (time 



Если вы добавите это выражение к свойству «Исходный текст» текстового слоя, вы обнаружите, что в течение первых 2 секунд вашей временной шкалы текст читается как «Текст включен», а после этого времени текст не отображается. Оператор if проверяет, истинно ли выражение, и если да, то он выполняет команду один раз и только один раз.

Однако, если вы измените его на это выражение, вы обнаружите, что After Effects почти сразу же аварийно завершает работу:

while (time 



Это связано с тем, что цикл while является циклом, поэтому он выполняет команду многократно, если утверждение истинно. Пока курсор находится в первых 2 секундах временной шкалы, цикл while будет повторяться бесконечно. Не совсем идеально и уж точно не то, чего мы пытались достичь! Важно убедиться, что ваш цикл while в конечном итоге станет ложным, чтобы избежать этих бесконечных циклов.

Подробнее об операторах if можно прочитать в моей предыдущей статье здесь.

Циклы while против циклов for

Хорошо, поэтому важно отметить, что не следует использовать циклы while, такие как операторы if. Но есть и другие типы циклов, которые мы можем использовать для создания выражений. Чем, например, цикл while отличается от цикла for?

Цикл for работает с тремя аргументами и идеален, когда вы знаете, сколько раз вам нужно повторять команды.

Возьмем этот пример и генерируем случайные числа:

//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]

После настройки переменных цикл начинается с let i = 0, устанавливая первый аргумент, который выполняется один раз. Затем время >= i/2 определяет, как часто должен выполняться цикл. Установка цикла таким образом будет означать, что цикл выполняется дважды в секунду, поскольку время должно быть больше или равно половине i. Наконец, третий аргумент я буду запускать каждый раз после выполнения цикла. В этом случае значение i увеличивается на 1.

При повторном запуске этого выражения в свойстве «Исходный текст» текстового слоя случайное число от 1 до 5 будет отображаться дважды в секунду.

Для получения дополнительной информации о циклах for см. мою предыдущую статью здесь.

Цикл while лучше всего использовать, когда вы не знаете, сколько раз нужно будет выполнить цикл. Из-за этого я обнаружил, что он не очень хорошо работает с выражениями, требующими времени. Циклы типа for работают очень хорошо, так как это заманивает вас в ловушку этих надоедливых бесконечных циклов.

Итак, когда следует использовать циклы while?

Когда использовать циклы while

Учитывая все это, в следующих условиях следует использовать цикл while:

  • Нам нужно выполнить выражение более одного раза
  • Мы не знаем, сколько раз нам нужно выполнить наш цикл
  • Мы можем прервать цикл, чтобы избежать его бесконечного выполнения

Недавно я нашел этому применение в After Effects, работая над своим проектом генератора случайных чисел.

Давайте посмотрим на следующий код:

//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]

В этом случае цикл while проверяет, соответствует ли текущее значение num предыдущему значению, хранящемуся в массиве numArray. Если это так, он генерирует новое случайное число от 1 до 5. Цикл будет выполняться до тех пор, пока num и предыдущее число, хранящееся в массиве, совпадают. Однако, если числа не совпадают, цикл while завершается, и выражение может перейти к следующей строке кода.

Поскольку мне возможно, придется сгенерировать новое случайное число более одного раза, оператор if здесь не работает.

И поскольку я не знаю, сколько раз мне нужно будет обновить случайное число, количество циклов также остается загадкой: так что цикл for здесь тоже бесполезен.

Поэтому цикл while — мой лучший вариант. Он будет выполняться столько раз, сколько мне нужно, пока аргумент внутри него не станет ложным, что обязательно произойдет, пока функция random() сгенерирует число, не соответствующее предыдущему.

Заключение

В заключение, циклы while, вероятно, будут необычным инструментом в вашем поясе выражений After Effects. Однако их полезно изучить, например, в тех случаях, когда обычные подозреваемые могут оказаться непригодными.

Было ли это полезно для вас? Есть ли у вас пример использования цикла while в вашем проекте? Я понял что-то не так? Пожалуйста, оставьте мне комментарий и дайте мне знать.

Заявление о выпуске Эта статья воспроизводится по адресу: https://dev.to/kocreative/after-effects-while-loops-447e?1. Если есть какие-либо нарушения, пожалуйста, свяжитесь с учебой[email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3