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??
June 18th, 2007 at 20:35
Erick SouzaRSS Feed
Digite os termos da sua pesquisa Enviar formulário de pesquisa
Web blog.ericksouza.com
——————————————————————————–
Estruturas de Repetição
April 15th, 2006 by Erick Souza
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:
PLAIN TEXT
Actionscript:
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
PLAIN TEXT
Actionscript:
for(velocidade = 1; velocidade 100) clearInterval(interval);
};
interval = setInterval(duplicar, 5);
Malva:
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
Erick Souza:
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.
Malva:
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″
Erick Souza:
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.
Malva:
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]
Malva:
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);
}[…]
Erick Souza:
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]
Malva:
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
cristiane marcilia:
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.
Débora:
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??
Trackback
Leave a Comment
Name (required)
Mail (will not be published) (required)
Website
Pages
Home
Sua Opinião
About Me
Contact
Meu Perfil
Contato
Categories
Acessibilidade
Actionscript
Actionscript 3.0
Apollo
Blog
Classes
Desenhos Animados
Experimentos
Flash
Flash 9
Flash CS3
Flex
Geral
PHP / MySQL
Respostas
Rich Internet Applications
Usabilidade
Vídeos
Web Standards
Archives
March 2007
February 2007
January 2007
December 2006
November 2006
October 2006
September 2006
August 2006
June 2006
May 2006
April 2006
February 2006
January 2006
FEED
RSS FEED
FEED VIA E-MAIL:
Meta
——————————————————————————–
Copyright 2006. Erick Souza. All rights reserved. | RSS Feed | Login |
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).