全面披露:我討厭 while 循環。我花了很長時間才理解它們,但我想我終於明白了它們的目的。
一開始,每次我嘗試編寫自己的 while 循環時,After Effects 都會立即崩潰。現在我對出了什麼問題有了更多的了解,我想寫下什麼是while 循環、何時使用它,以及如何將它合併到After Effects 表達式中而不會使項目崩潰(請記住定期保存,各位)。
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 循環:
我們看下面的程式碼:
//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 迴圈的範例嗎?我是不是搞錯了什麼?請給我留言並讓我知道。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3