」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > After Effects:While 循環

After Effects:While 循環

發佈於2024-11-06
瀏覽:997

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