Repetição

As instruções de repetição permitem executar um bloco específico de código repetidamente usando uma série de valores ou variáveis. A Adobe recomenda que o bloco de código seja sempre colocado entre chaves ({}). Embora você possa omitir as chaves caso o bloco de código contenha apenas uma instrução, essa prática não é recomendada pelo mesmo motivo que para as condicionais: ela aumenta as chances de que as instruções adicionadas em um momento posterior sejam excluídas inadvertidamente do bloco de código. Se, mais tarde, você adicionar uma instrução que deseja incluir no bloco de código, mas esquecer de adicionar as chaves necessárias, a instrução não é executada como parte da repetição.

for

A repetição for permite fazer a iteração por meio de uma variável para um intervalo específico de valores. Você deve fornecer três expressões em uma instrução for: uma variável que é definida com um valor inicial, uma instrução condicional que determina quando a repetição termina e uma expressão que altera o valor da variável a cada repetição. Por exemplo, o código a seguir é repetido cinco vezes. O valor da variável i começa com 0 e termina com 4, e a saída são os números de 0 a 4, cada um em sua própria linha.

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

for..in

A repetição for..in itera por meio das propriedades de um objeto ou dos elementos de uma matriz. Por exemplo, você pode usar uma repetição for..in para iterar por meio das propriedades de um objeto genérico (as propriedades do objeto não são mantidas em uma ordem específica, por isso elas podem aparecer em uma ordem aparentemente aleatória):

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

Também é possível iterar por meio dos elementos de uma matriz:

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

O que você não pode fazer é fazer a iteração pelas propriedades de um objeto se ele for uma ocorrência de uma classe selada (incluindo classes incorporadas e classes definidas pelo usuário). Você só pode fazer a iteração pelas propriedades de uma classe dinâmica. Mesmo com as ocorrências de classes dinâmicas, você só pode fazer iterações pelas propriedades que são acrescentadas dinamicamente.

for each..in

A repetição for each..in itera por meio dos itens de um conjunto, que podem ser tags em um objeto XML ou XMLList, os valores mantidos pelas propriedades do objeto ou os elementos de uma matriz. Por exemplo, como mostra o trecho a seguir, você pode usar uma repetição for each..in para iterar por meio das propriedades de um objeto genérico, mas diferentemente da repetição for..in, a variável do iterador em uma repetição for each..in contém o valor mantido pela propriedade em vez do nome da propriedade:

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

Você pode iterar por meio de um objeto XML ou XMLList, como mostra o seguinte exemplo:

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 
*/

Também é possível iterar por meio dos elementos de uma matriz, como mostra este exemplo:

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

Você não poderá iterar por meio das propriedades de um objeto se o objeto for uma ocorrência de uma classe selada. Mesmo para ocorrências de classes dinâmicas, não é possível iterar por meio de uma propriedade fixa, que é a propriedade especificada como parte da definição de classe.

while

A repetição while é como uma instrução if que é repetida desde que a condição seja true. Por exemplo, o código a seguir produz a mesma saída que o exemplo da repetição for:

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

Uma desvantagem do uso de uma repetição while em vez de for é que repetições infinitas são mais fáceis de escrever com repetições while. O exemplo da repetição for não será compilado se você omitir a expressão que incrementa a variável do contador, mas o exemplo da repetição while será compilado se essa etapa for omitida. Sem a expressão que incrementa i, a repetição se torna infinita.

do..while

A repetição do..while é uma repetição while que garante que o bloco de código seja executado pelo menos uma vez, porque a condição é verificada depois que o bloco é executado. O código a seguir mostra um exemplo simples de uma repetição do..while que gera saída mesmo que a condição não seja atendida:

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