”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > After Effects:While 循环

After Effects:While 循环

发布于2024-11-06
浏览:608

After Effects: While Loops

内容

  • 介绍
  • while 循环与 if 语句
  • while 循环与 for 循环
  • 何时使用 while 循环
  • 结论

介绍

全面披露:我讨厌 while 循环。我花了很长时间才理解它们,但我想我终于明白了它们的目的。

一开始,每次我尝试编写自己的 while 循环时,After Effects 都会立即崩溃。现在我对出了什么问题有了更多的了解,我想写下什么是 while 循环、何时使用它,以及如何将它合并到 After Effects 表达式中而不会使项目崩溃(请记住定期保存,各位)。

while 循环与 if 语句

while 循环,顾名思义,是一个只要表达式为 true 就执行的循环。

“只要表达式为真就执行”——这听起来有点像 if 语句,不是吗?

if (time 



如果将此表达式添加到文本图层的“源文本”属性中,您会发现时间线的前 2 秒文本显示为“文本打开”,并且在该时间之后不显示任何文本。 if 语句检查表达式是否为真,如果为真,则执行命令 一次,并且仅执行一次。

但是,如果你将其更改为这个表达式,你会发现After Effects几乎立即崩溃:

while (time 



这是因为while循环是一个循环,所以如果语句为真,它会重复执行命令。只要您的光标位于时间线的前 2 秒,while 循环就会无限循环。并不完全理想,当然也不是我们想要实现的目标!重要的是要确保您的 while 循环最终会变为 false,以避免这些无限循环。

有关 if 语句的更多信息,请参阅我之前的文章。

while 循环与 for 循环

好的,所以请务必注意不要使用像 if 语句这样的 while 循环。但是我们还可以使用其他类型的循环来创建表达式。例如,while 循环与 for 循环有何不同?

for 循环使用 3 个参数,当您

知道需要循环命令多少次时,它是理想的选择

以本例为例,生成随机数:


//变量 让计数器= 0; 让数字= 0; 让numArray = []; //for循环 for (令 i = 0; 时间 >= i/2; i ) { SeedRandom(计数器,永恒= true); num = Math.floor(随机(1, 6)); numArray.push(num); 柜台 } //返回 numArray[计数器 - 1]
//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开始,设置执行

一次的第一个参数。然后,time >= i/2 确定循环执行的频率。以这种方式设置循环将意味着循环每秒执行两次,因为时间需要大于或等于 i 的一半。最后,第三个参数我将在循环执行后每次运行。在这种情况下,i的值增加1。

在文本图层的源文本属性中再次运行此表达式将每秒显示两次 1 到 5 之间的随机数。

有关 for 循环的更多信息,请参阅我之前的文章。

当您

不知道循环需要执行多少次时,最好使用 while 循环。因此,我发现它们不能很好地处理涉及时间的表达式就像 for 循环做得很好,因为这会让你陷入那些讨厌的无限循环中。

那么什么时候

应该我们使用while循环?

何时使用 while 循环

记住所有这些,在这些条件下应该使用 while 循环:

    我们需要多次执行表达式
  • 我们不知道需要执行循环多少次
  • 我们能够打破循环,避免它执行到无穷大
我最近在处理我的随机数生成器项目时在 After Effects 中发现了此功能的用途。

我们看下面的代码:


//变量 让计数器= 0; 让数字= 0; 让numArray = []; //for循环 for (令 i = 0; 时间 >= i/2; i ) { SeedRandom(计数器,永恒= true); num = Math.floor(随机(1, 6)); //For循环内的While循环 while (num == numArray[计数器 - 1]) { num = Math.floor(随机(1, 6)); } numArray.push(num); 柜台 } //返回 numArray[计数器 - 1]
//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]
在此实例中,while 循环检查 num 的当前值是否等于存储在 numArray 数组中的先前值。如果是,它会生成一个 1 到 5 之间的新随机数。只要 num 和数组中存储的前一个数字相同,循环就会执行。然而,一旦数字不匹配,while 循环就会结束,并且表达式可以自由地继续到下一行代码。

因为我

可能必须多次生成新的随机数,if语句在这里不起作用。

而且因为我

不知道需要刷新随机数多少次,循环次数也是一个谜:所以 for 循环在这里也不好。

因此 while 循环是我最好的选择。它会根据我需要执行多次,

直到它内部的参数为 false,只要 random() 函数生成一个与前一个不匹配的数字,这种情况就肯定会发生。

结论

总之,while 循环可能是 After Effects 表达带中不常见的工具。然而,它们对于学习很有用,例如通常的嫌疑人可能不适合的情况。

您觉得这有帮助吗?您有在项目中使用 while 循环的示例吗?我是不是搞错了什么?请给我留言并让我知道。

版本声明 本文转载于:https://dev.to/kocreative/after-effects-while-loops-447e?1如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3