Looping

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

副主題

for
for..in
for each..in
while
do..while

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]);
}
// 輸出:
// x: 20
// y: 30

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

var myArray:Array = ["one", "two", "three"];
for (var i:String in myArray)
{
    trace(myArray[i]);
}
// 輸出:
// 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);
}
// 輸出:
// 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);
}
/* 輸出
Jane
Susan
John
*/

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

var myArray:Array = ["one", "two", "three"];
for each (var item in myArray)
{
    trace(item);
}
// 輸出:
// 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);
// 輸出:5

Flash CS3

 

有新的意見加入至這個頁面時,傳送電子郵件給我 | 意見報告

目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000052.html