Estruturas de Repetição
As estruturas de repetição são utilizadas quando necessitamos realizar comandos diversas vezes, como por exemplo, imprimir um array ou duplicar um movieClip milhares de vezes.
Estrutura for
A estrutura for executará comandos enquanto a condição for verdadeira. A sintaxe desta estrutura é a seguinte:
for(inicial; condição; próximo) { [comandos]; }
- inicial: valor inicial, que é lido apenas uma vez.
- condição: condição que determinará quantas vezes o loop rodará, é verificada antes de cada loop.
- próximo: é executado a cada loop.
Exemplo
for(velocidade = 1; velocidade <= 100; velocidade++) { trace(velocidade); }
A variável velocidade é zero, enquanto a esta variável for menor ou igual a 100, esta será incrementada a cada loop, e os comandos definidos entre as chaves serão executados, no exemplo é impresso o valor atual da variável a cada loop.
Outro Exemplo
Crie um movieClip e o instancie de ESouza, aplique o código abaixo no primeiro frame.
for(i=1; i <= 100; i++){ var randomX:Number = Math.floor(Math.random() * 400)+1; var randomY:Number = Math.floor(Math.random() * 300)+1; var randomScale:Number = Math.floor(Math.random() * 60)+1; var randomOpac:Number = Math.floor(Math.random() * 100)+1; var randomRot:Number = Math.floor(Math.random() * 360)+1; duplicateMovieClip("ESouza", "Esouza" + i, i); _root["Esouza" + i]._x = randomX; _root["Esouza" + i]._y = randomY; _root["Esouza" + i]._xscale = randomScale; _root["Esouza" + i]._yscale = randomScale; _root["Esouza" + i]._alpha = randomOpac; _root["Esouza" + i]._rotation = randomRot; }
No código acima o movieClip Esouza foi duplicado cem vezes utilizando a estrutura de repetição for, e para que a posição, escala, rotação e a opacidade variassem, foi utilizado o método Math.random.
Estrutura for..in
Utiliza-se o for..in para regatar as propriedades de objetos e elementos de um array. A sintaxe desta estrutura é a seguinte:
for (variável in objeto) { [comandos]; }
- variável: nome da variável, esta receberá valores temporários a cada loop.
- objeto: o nome do objeto.
- comandos: é executado a cada propriedade do objeto.
Exibindo as propriedades de um objeto:
var usuarios:Object = {Erick:"Flash", Maria:"Flex", João:"Open Lazlo"}; for(var lista in usuarios){ trace(lista + " gosta do " + usuarios[lista]); }
Exibindo os elementos de um array:
Exemplo
var nome:Array = new Array("Erick", "Maria", "João"); for(var lista in nome){ trace("Olá " + nome[lista]); }
Outro exemplo
var nome:Array = new Array("Erick", "Maria", "João"); for(var lista in nome){ trace("nome[" + lista + "] = "+ nome[lista]); }
Estrutura while
Como o for, o while é repetido enquanto a condição for verdadeira. A sintaxe desta estrutura é a seguinte:
while(condição){ [comandos]; }
Exemplo
var velocidade:Number = 1; while(velocidade <= 100 ){ trace(velocidade); velocidade++; }
Exemplo de duplicação de movieClip
var i:Number = 0; while(i < 100 ){ i++; var randomX:Number = Math.floor(Math.random() * 400)+1; var randomY:Number = Math.floor(Math.random() * 300)+1; var randomScale:Number = Math.floor(Math.random() * 60)+1; var randomOpac:Number = Math.floor(Math.random() * 100)+1; var randomRot:Number = Math.floor(Math.random() * 360)+1; duplicateMovieClip("ESouza", "Esouza" + i, i); _root["Esouza" + i]._x = randomX; _root["Esouza" + i]._y = randomY; _root["Esouza" + i]._xscale = randomScale; _root["Esouza" + i]._yscale = randomScale; _root["Esouza" + i]._alpha = randomOpac; _root["Esouza" + i]._rotation = randomRot; }
Estrutura do.. while
A diferença do while em comparação ao do.. while, é que no do.. while, a verificação é feita após a execução dos comandos, portanto, mesmo que a condição seja falsa, os comandos serão executados pelo menos uma vez.
var velocidade:Number = 1; do{ trace(velocidade); velocidade++; }while(velocidade <= 100 );




August 6th, 2006 at 16:29
Ola! Muito legal sua explicação!! Valeu mesmo!
Bom, se eu quiser ter esse efeito de duplicação, mas aos poucos e usando um efeito tween, como poderia ser feito?
Um grande abraço
September 2nd, 2006 at 9:04
Oi Malva, veja um exemplo seguindo o artigo:
import mx.transitions.Tween;
import mx.transitions.easing.*;
quantidade = 0;
function duplicar():Void{
var randomX:Number = Math.floor(Math.random() * 400)+1;
var randomY:Number = Math.floor(Math.random() * 300)+1;
var randomScale:Number = Math.floor(Math.random() * 60)+1;
var randomOpac:Number = Math.floor(Math.random() * 100)+1;
var randomRot:Number = Math.floor(Math.random() * 360)+1;
duplicateMovieClip(_root.ESouza, 'Esouza' + quantidade, quantidade);
_root['Esouza' + quantidade]._x = randomX;
_root['Esouza' + quantidade]._y = randomY;
_root['Esouza' + quantidade]._xscale = randomScale;
_root['Esouza' + quantidade]._yscale = randomScale;
_root['Esouza' + quantidade]._alpha = 0;
_root['Esouza' + quantidade]._rotation = randomRot;
var alphaMc:Tween = new Tween(_root['Esouza' + quantidade], '_alpha', Regular.easeOut, 0, randomOpac, 1, true);
quantidade++;
if(quantidade > 100) clearInterval(interval);
};
interval = setInterval(duplicar, 5);
September 3rd, 2006 at 10:51
Opa! Legal você ter respondido, mas não estou conseguindo usar esse código, desculpe, vc poderia explicá-lo?
Um grande abraço
Malva
September 3rd, 2006 at 11:17
Malva, instancie um movieClip de ESouza, e aplique o código na Timeline.
Se tiver alguma dúvida em alguma parte do código, indique para que eu possa lhe ajudar. Abraços.
September 3rd, 2006 at 14:34
Fiz isso e está dando esse erro aqui:
” **Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 13: This type of quotation mark is not allowed in ActionScript. Please change it to a standard (straight) double quote.
duplicateMovieClip(”ESouza”, “Esouza” + quantidade, quantidade);
[...]
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 21: This type of quotation mark is not allowed in ActionScript. Please change it to a standard (straight) double quote.
var alphaMc:Tween = new Tween(_root[”Esouza” + quantidade], “_alpha”, Regular.easeOut, 0, randomOpac, 1, true);
Total ActionScript Errors: 8 Reported Errors: 8″
September 3rd, 2006 at 15:29
Malva o que aconteceu foi que o sistema do Blog converteu as aspas para um tipo não permitido no Actionscript, seja aspas simples ou duplas, é preciso que sejam retas., veja:
“[...]This type of quotation mark is not allowed in ActionScript. Please change it to a standard (straight) double quote.[...]“.
Eu postei novamente o código entre as tags [code] e ele preservou a código, instancie o movieClip de ESouza e copie o código acima novamente.
September 3rd, 2006 at 18:21
Legal deu certo agora!!
Obrigado!!
Hum ficou muito bom!
Parabens!
Mais um favor: De uma olhada no meu site e veja que esta lento, não usei “tween” sera que pode ser isso de o deixa lento? Usei action
[as]onClipEvent (enterFrame) {
this._xscale += F=F*0.6+(_root.cX-this._xscale)/(T=10);
this._yscale += F=F*0.6+(_root.cY-this._yscale)/(T=10);
}[as]
September 3rd, 2006 at 18:22
errei!
[...]onClipEvent (enterFrame) {
this._xscale += F=F*0.6+(_root.cX-this._xscale)/(T=10);
this._yscale += F=F*0.6+(_root.cY-this._yscale)/(T=10);
}[...]
September 4th, 2006 at 23:37
Provavelmente Malva, muitos onEnterFrame deixam o filme lento, faz assim, após cada animação finalizar, delete o onEnterFrame. Utilize a instrução delete. Ex: [as]delete instanciaMc.onEnterFrame;[/as]
September 5th, 2006 at 0:41
Ola Erick muito obrigado pela atenção, mas essa função coloco no primeiro frame do meu filme?
Um abraço
Malva
November 17th, 2006 at 15:32
olá tenho uma dúvida, com relação à xml no flash, estou tentando carregar um swf dentro de outro swf, só que o swf que esta sendo chamado contém parametros para o xml mas quando chamado não carrega o xml.
Na verdade é uma galeria de fotos, que chamo as fotos pelo xml, você pode me ajudar?
Desde já agradeço a atenção.
June 4th, 2007 at 13:59
oi eu to com um problema tenho um algoritmo para fazer mais naum sei nem por onde começar .. hauHAUhau
sera que alguem pode me ajudar??
November 30th, 2007 at 13:23
Erick,
Você não sabe o quanto me ajudou lendo seu blog, muito obrigado mesmo, estou iniciando no flash e estava com um daqueles problemas, q por causa deles muitos iniciantes ja deram um tiro na cabeça, rsrsr, valeu mesmo, já adicionei a favoritos e sempre retornarei, obrigado mesmo!
March 28th, 2008 at 18:05
diet ephedra loss ephedra
May 16th, 2008 at 12:00
Cara…blz?
Cara, não consigo fazer aquele efeito q vc passou la.
for(i=1; i
May 16th, 2008 at 12:04
Cara…blz?
Cara, não consigo fazer aquele efeito q vc passou la.
coloco o codigo certo, rodo o swf, ñ da nenhum erro mas tbm ñ acontec nada com o mc.
o que será q ta acontecendo?
Abraços
October 28th, 2008 at 11:57
Ola galera o eu aqui de novo
Estou aqui hoje para contar uma novidade para vocês.
GoogleCubo é a novidade da Google para esse verão.
Esse pessoal da Google não para de inventa, eles vão acabar dominando o mundo.
A Google agora invento o Google Cubo, finalmente uma boa noticia para pessoas que tem pequenos e médios sites, eles estão cobrando uma pequena taxa para colocar o seu site em primeiro lugar na página do Google, muito bom, adorei, o ruim é que só tem 10 mil vagas.
Da uma olhada galera.
http://www.googlecubo.com.br
November 16th, 2008 at 10:38
velho to com um problema q vc deve resolver em um segundo, mas eu ja to levando dois dias e n consigo… to usando esse codigo:
for (i=1; i<=15; i++) {
var moveMc:Tween = new mx.transitions.Tween(_root['slide'+i], ‘_x’, mx.transitions.easing.Regular.easeOut, _root['slide'+i]._x, (i-posatual)*1000, 1, true);
}
para mover umas fotos, ele funciona perfeitamente mas quando eu chamo esse slideshow de outro swf atraves de loadmoavie ele n funciona mais:
_root.mc_vazio.loadMovie(”slide1tween.swf”);
como q eu resolvo esse problema???
valeu!!!
November 17th, 2008 at 10:50
O problema está no _root, depois que carrega ele em outro swf, o escopo muda, é aconselhável usar caminhos relativos para evitar estes problemas (this, _parent).
April 20th, 2009 at 11:02
Erick vc poderia me ajudar a fazer um programa que leia essa serie de 100 valores: 1,3,6,10,15…
e tambem o programa que leia o número inteiro positivo e calcule o fatorial de até 12 valores
s=1!/1 -2!/3 + 3!/7- 4!/15 + 5!/31 - 6!/63 +… ?
se puder me ajudar agradeceria…
beijos
April 24th, 2009 at 15:41
oi erick sou eu de novo será q poderia me ajudar?
não estou conseguindo fazer!!!
beijos e obrigada
April 27th, 2009 at 11:23
Oi Mariana, onde você está tendo problemas?
April 29th, 2009 at 13:15
eu consiguo dar o valor dos fatoriais, só ñ consigo somar eles e nem mostrar essa sequencia…poderia me ajudar?
o primeiro programa eu já consegui fazer, falta só o segundo, do fatorial.
April 29th, 2009 at 13:18
tenho q entregar amanhã!!!
Me ajuda!
beijos e obrigada!
April 29th, 2009 at 13:19
a estrutura de repetição usada é a For…
April 29th, 2009 at 17:24
Erick, me ajuda por favor, já estou nervosa por ñ estar conseguindo…
May 12th, 2010 at 11:48
gente, to fazendo estrutura de repeticao, em algoritmo, alguem poderia me ajudar, porque preciso criar um programa usando visual studio com linguagem c# . bom, quem puder tambem, sei la, me enviar um tutorial sobre C# eu ficaria muito feliz! beijos beijos