迴圈

迴圈陳述式可以讓您使用一串值或變數,重複執行特定的程式碼區塊。Adobe 建議您永遠使用大括號 ({}) 括住程式碼區塊。雖然程式碼區塊僅包含一個陳述式時,您可以省略大括號,但是不建議採用這種作法,理由和不建議條件陳述式省去大括號相同:將來若加入其它陳述式,會提高它意外從程式碼區塊排除的可能風險。若將來在程式碼區塊中加入想要包含的陳述式,但忘了加上必要的大括號,則該陳述式就不會成為迴圈的一部分執行。

for

for 迴圈可以讓您針對特定數值範圍的變數重複執行。您必須在 for 陳述式中提供三個運算式:設定為初始值的變數、決定迴圈何時結束的條件陳述式,以及隨每次迴圈變更變數值的運算式。例如,下列程式碼會重複迴圈五次。變數 i 的值開始於 0 而結束於 4,而輸出則是從 0 到 4,每個值都各自佔有一行。

var i:int; 
for (i = 0; i < 5; i++) 
{ 
    trace(i); 
}

for..in

for..in 迴圈會重複執行物件的屬性或陣列的元素。例如,您可以使用 for..in 迴圈可重複執行一般物件的屬性 (物件屬性並沒有任何特定順序,因此屬性可能會以隨機順序顯示):

var myObj:Object = {x:20, y:30}; 
for (var i:String in myObj) 
{ 
    trace(i + ": " + myObj[i]); 
} 
// output: 
// x: 20 
// y: 30

您也可以重複執行陣列的元素:

var myArray:Array = ["one", "two", "three"]; 
for (var i:String in myArray) 
{ 
    trace(myArray[i]); 
} 
// output: 
// one 
// two 
// three

如果物件是密封類別的實體 (包括內建的類別和使用者定義的類別),您將無法重複執行其屬性。您只能重複動態類別的屬性。即使有動態類別的實體,您也只能重複動態新增的屬性。

for each..in

for each..in 迴圈會重複執行集合中的項目,這些項目可能是 XML 或 XMLList 物件中的標籤、物件屬性保留的值,或陣列的元素。例如,如下列摘錄所示,您可以使用 for each..in 迴圈重複執行一般物件的屬性,但與 for..in 迴圈不同的是,for each..in 迴圈中的迴圈指標變數包含由屬性保存的值,而不是屬性名稱:

var myObj:Object = {x:20, y:30}; 
for each (var num in myObj) 
{ 
    trace(num); 
} 
// output: 
// 20 
// 30

您可以重複執行 XML 或 XMLList 物件,如下列範例所示:

var myXML:XML = <users> 
    <fname>Jane</fname> 
    <fname>Susan</fname> 
    <fname>John</fname> 
</users>; 
 
for each (var item in myXML.fname) 
{ 
    trace(item); 
} 
/* output 
Jane 
Susan 
John 
*/

您也可以重複執行陣列的元素,如下列範例所示:

var myArray:Array = ["one", "two", "three"]; 
for each (var item in myArray) 
{ 
    trace(item); 
} 
// output: 
// one 
// two 
// three

如果物件是密封類別的實體,您將無法重複執行其屬性。即使是動態類別的實體,您也無法重複執行任何固定的屬性,這些都是定義為類別定義之一部分的屬性。

while

while 迴圈與 if 陳述式相同,只要條件為 true,就會不斷重複。例如,下列程式碼會產生與 for 迴圈範例相同的輸出:

var i:int = 0; 
while (i < 5) 
{ 
    trace(i); 
    i++; 
}

使用 while 迴圈而不使用 for 迴圈的一項缺點,是利用 while 迴圈編寫無限迴圈較為容易。如果省略遞增計數器變數的運算式,for 迴圈範例程式碼就不會編譯,但若省略該步驟,while 迴圈範例卻能進行編譯。如果沒有遞增 i 的運算式,該迴圈就會變成無限迴圈。

do..while

do..while 迴圈是保證程式碼區塊至少執行一次的 while 迴圈,因為其條件是在程式碼區塊執行之後才檢查。下列程式碼會示範 do..while 迴圈的簡單範例,此範例即使在條件不符的情況下也會產生輸出:

var i:int = 5; 
do 
{ 
    trace(i); 
    i++; 
} while (i < 5); 
// output: 5