AS 3.0/ Flex

Como setar intervalos de tempo no Actionscript 3.0?

Até o Flash 8, é comum o costume de usar o setInterval(NomedaFuncao,duracao, argumentos) para gerar intervalos de tempo e executar alguma função ou passar argumentos para funções que estejam no evento de enterFrame.

Embora isso seja bastante usando em sites feitos em Flash, o Flex também tem o método SetInterval(), que ainda faz uso disso, devido a antiga forma que era no Flex 1.5, sintax é a mesma.

Veja um exemplo básico de uso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 
 
	<mx:Script>
		<![CDATA[
			import mx.controls.Label;
 
			private var i:Number = 5000;
			private var tempolbl:Label = new Label();
			private var verifica:Boolean = false;
 
			private function adicionaLabel():void
			{
				tempolbl.text = "Depois de alguns segundos gastos!";
				tempolbl.setStyle("fontSize",20);
				tempolbl.x = 40;
				tempolbl.y = 40;
				if(verifica !=true)
				{
					verifica = false;
					addChild(tempolbl);
					clearInterval(tempo);
				}else{
					mx.controls.Alert.show("Objeto já foi criado");
				}
			}
			private var tempo:uint;
			private function startTempo():void
			{
				tempo = setInterval(adicionaLabel,i);
			}
 
		]]>
	</mx:Script>
	<mx:Button click="startTempo()" x="69" y="137" label="Aparecer 5 segundos"/>
</mx:Application>

Porém com a chegada do Actionscript 3.0, a coisa ficou bem mais fácil, o uso tanto do setInterval quanto da classe Timer, são particularmente obrigatórias para um sistema que queira funcionar igualmente em máquenas mais lentas e em máquenas mais rápidas.

A questão é que alguns usam ainda e muito for e do..while para gerar loops e assim coletar alguns dados etc, não colocando em prática até então o uso do Timer para fazer essas coletas ou executar alguma função que faça isso.

Usar for e do..while é dificil calcular o exato momento ou o intervalo de tempo quando é comparado de um computador para outro por exemplo. Tanto que a classe Timer é uma cópia fiel da classe Timer do Java, que faz esse controle perfeitamente igual no Actionscript 3.0.

Então resumindo, usar o setInterval do Flash 8 dentro do Flex da no mesmo, porém usando algo na sintaxe já ideal do Actionscript 3.0 o código fica mais legível ao ponto de vista de quem ver.