﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ppalmeida &#187; Tecnologia</title>
	<atom:link href="http://www.pedropauloalmeida.com.br/category/tecnologia/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pedropauloalmeida.com.br</link>
	<description>flash &#124; flex &#124; air consultant</description>
	<lastBuildDate>Wed, 03 Feb 2010 12:09:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google compra On2, desenvolvedora do codec VP6</title>
		<link>http://www.pedropauloalmeida.com.br/tecnologia/google-compra-on2/</link>
		<comments>http://www.pedropauloalmeida.com.br/tecnologia/google-compra-on2/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 14:26:35 +0000</pubDate>
		<dc:creator>Pedro Paulo</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[vídeo]]></category>
		<category><![CDATA[vp6]]></category>

		<guid isPermaLink="false">http://www.pedropauloalmeida.com.br/?p=119</guid>
		<description><![CDATA[Se você já trabalhou com vídeo para web em flash sabe da importância do codec VP6. Pois é. O Google também. E tratou de adquirir a On2 para garantir o futuro e estabilidade dos codec que é a base do Youtube hoje em dia.
Uma rápida olhada no &#8220;about us&#8221; da On2 dá para perceber o [...]]]></description>
			<content:encoded><![CDATA[<p>Se você já trabalhou com vídeo para web em flash sabe da importância do codec VP6. Pois é. O Google também. E tratou de adquirir a On2 para garantir o futuro e estabilidade dos codec que é a base do Youtube hoje em dia.</p>
<p>Uma rápida olhada no &#8220;about us&#8221; da On2 dá para perceber o alcance da jogada realizada pelo Google:</p>
<p><em>On2 (NYSE Amex: ONT) creates advanced video compression technologies        that power the video in today’s leading desktop and mobile applications        and devices. On2 customers include Adobe, Skype, Nokia, Infineon, Sun        Microsystems, Mediatek, Sony, Brightcove, and Move Networks. On2        Technologies is headquartered in Clifton Park, NY USA.</em></p>
<p>Matéria detalhes, clique <a class="external" target="_blank" href="http://www.businesswire.com/portal/site/google/?ndmViewId=news_view&amp;newsId=20090805005571&amp;newsLang=en">aqui<span>(link externo)</span></a>.<br />
via @scottjanousek @rhall RT @keithpeters</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pedropauloalmeida.com.br/tecnologia/google-compra-on2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grande jogada da Microsoft: Mike Downey agora por Silverlight!</title>
		<link>http://www.pedropauloalmeida.com.br/tecnologia/grande-jogada-da-microsoft-mike-downey-agora-por-silverlight/</link>
		<comments>http://www.pedropauloalmeida.com.br/tecnologia/grande-jogada-da-microsoft-mike-downey-agora-por-silverlight/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 17:12:21 +0000</pubDate>
		<dc:creator>Pedro Paulo</dc:creator>
				<category><![CDATA[Plataforma Flash]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[mike downey]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.pedropauloalmeida.com.br/?p=95</guid>
		<description><![CDATA[Um dos prinicipais mentores e colaboradores do mundo Flash foi para a Microsoft. Uma jogada inteligentíssima da gigante. Mike Downey(link externo) leva seu conhecimento sobre RIA para o time do Silverlight. A priori parece uma sandice sem tamanho da Adobe deixar Mike, que já vinha com a plataforma Flash desde a extinta Macromedia. Um &#8220;desfalque&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos prinicipais mentores e colaboradores do mundo Flash foi para a Microsoft. Uma jogada inteligentíssima da gigante. <a class="external" href="http://madowney.com/blog/2009/07/31/i-joined-microsoft/" target="_blank">Mike Downey<span>(link externo)</span></a> leva seu conhecimento sobre RIA para o time do Silverlight. A priori parece uma sandice sem tamanho da Adobe deixar Mike, que já vinha com a plataforma Flash desde a extinta Macromedia. Um &#8220;desfalque&#8221; e tanto para a Adobe, em minha opinião.</p>
<p>Para mim, que sou desenvolvedor RIA, é um motivo a mais para se concentrar no Silverlight. Quando a Microsoft resolve entrar em uma batalha, dificilmente é para fazer feio. O Silverlight começou como algo um tanto limitado, mas hoje já desponta como uma ferramenta que deve ser levada a sério. Eu vou seguir o conselho de amigos e correr para me inteirar mais sobre o assunto &#8211; já atrasado, admito.</p>
<p>Um home-run para a M$!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pedropauloalmeida.com.br/tecnologia/grande-jogada-da-microsoft-mike-downey-agora-por-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe anuncia 12! falhas de segurança no FlashPlayer. 3 por conta da M$</title>
		<link>http://www.pedropauloalmeida.com.br/tecnologia/correcoes-flashplayer/</link>
		<comments>http://www.pedropauloalmeida.com.br/tecnologia/correcoes-flashplayer/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 14:46:26 +0000</pubDate>
		<dc:creator>Pedro Paulo</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[flash player]]></category>

		<guid isPermaLink="false">http://www.pedropauloalmeida.com.br/?p=83</guid>
		<description><![CDATA[A Adobe anunciou um patch de correções para o Flash Player. Doze falhas de segurança é um número muito significativo, para não dizer inaceitável. Dessas doze, três são de responsabilidade direta da Microsoft. Uma library do Visual Studio &#8211; especificamente a Active Template Library &#8211; está corrompida e possui falhas de segurança.
A Microsoft está lidando [...]]]></description>
			<content:encoded><![CDATA[<p>A Adobe anunciou um patch de correções para o Flash Player. Doze falhas de segurança é um número muito significativo, para não dizer inaceitável. Dessas doze, três são de responsabilidade direta da Microsoft. Uma library do Visual Studio &#8211; especificamente a Active Template Library &#8211; está corrompida e possui falhas de segurança.</p>
<p>A Microsoft está lidando com falhas nessa lib desde 2008, segundo Mike Reavey, diretor do Centro Segurança da M$. Para Brad Arkin, diretor de Segurança de Produto e Privacidade da Adobe, o difícil é &#8220;<em>definir o que era vulnerável. É simples refazer uma versão de teste, mas temos que garantir que o produto realmente funciona e ter certeza de que está inviolável</em>&#8220;. Uia! E só descobriu isso agora???</p>
<p>Bom&#8230; sugiro que você <a class="external" href="http://get.adobe.com/br/flashplayer/" target="_blank">atualize seu flash player<span>(link externo)</span></a>. E fique longe da lib quebrada da M$.</p>
<p>(via <a class="external" href="http://www.twitter.com/Flash_Builder" target="_blank">@Flash_Builder<span>(link externo)</span></a> -&gt; <a class="external" href="http://www.computerworld.com/s/article/9136116/Adobe_patches_12_Flash_bugs_3_caused_by_Microsoft?taxonomyId=86" target="_blank">Computer World<span>(link externo)</span></a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pedropauloalmeida.com.br/tecnologia/correcoes-flashplayer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Open Source</title>
		<link>http://www.pedropauloalmeida.com.br/tecnologia/adobe-open-source/</link>
		<comments>http://www.pedropauloalmeida.com.br/tecnologia/adobe-open-source/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 18:28:08 +0000</pubDate>
		<dc:creator>Pedro Paulo</dc:creator>
				<category><![CDATA[Plataforma Flash]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.pedropauloalmeida.com.br/?p=78</guid>
		<description><![CDATA[No blog antigo eu comentei quando a Adobe resolveu transformar o formato flash em um produto OpenSource. E isso continua de vento em popa. Na verdade, a Adobe é, entre os grandes players de TI mundial, uma das empresas com maior atividade OpenSource.
No vídeo abaixo, Dave McAllister, evangelista da Adobe fala sobre o que é [...]]]></description>
			<content:encoded><![CDATA[<p>No blog antigo eu comentei quando a Adobe resolveu transformar o formato flash em um produto OpenSource. E isso continua de vento em popa. Na verdade, a Adobe é, entre os grandes players de TI mundial, uma das empresas com maior atividade OpenSource.</p>
<p>No vídeo abaixo, Dave McAllister, evangelista da Adobe fala sobre o que é e como a Adobe atua e planeja suas ações no mundo OS.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/eNzrn8-JFSE&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/eNzrn8-JFSE&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></p>
<p>(via <a class="external" target="_blank" href="http://www.peterelst.com/blog/2009/07/25/open-at-adobe-dave-mcallister/">Peter Elst<span>(link externo)</span></a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pedropauloalmeida.com.br/tecnologia/adobe-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash x Flex: e no final, é tudo flash.</title>
		<link>http://www.pedropauloalmeida.com.br/tecnologia/flash-vrs-flex_e-no-final-e-tudo-flash/</link>
		<comments>http://www.pedropauloalmeida.com.br/tecnologia/flash-vrs-flex_e-no-final-e-tudo-flash/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 17:51:43 +0000</pubDate>
		<dc:creator>Pedro Paulo</dc:creator>
				<category><![CDATA[Plataforma Flash]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://www.pedropauloalmeida.com.br/?p=66</guid>
		<description><![CDATA[No blog de Keith Peters li hoje um post(link externo) que diz o seguinte: &#8220;Goodbye Flex Builder&#8221;. A Adobe vai chamar o produto Flex Builder de Flash Builder. Eu concordo plenamente.
O ponto de partida de que o Flex Builder produz apenas Flex é um erro grande. É possível usar o Flex Builder para produzir aplicações [...]]]></description>
			<content:encoded><![CDATA[<p>No blog de Keith Peters li hoje um <a class="external" href="http://www.bit-101.com/blog/?p=2095" target="_blank">post<span>(link externo)</span></a> que diz o seguinte: &#8220;Goodbye Flex Builder&#8221;. A Adobe vai chamar o produto Flex Builder de Flash Builder. Eu concordo plenamente.</p>
<p>O ponto de partida de que o Flex Builder produz apenas Flex é um erro grande. É possível usar o Flex Builder para produzir aplicações Flash sem o uso de MXML. E conheço várias pessoas &#8211; a maioria na gringa &#8211; que usa o Flex Builder para produzir aplicações Flash.</p>
<p>O argumento de Peters é válido: tome o Visual Studio da MS. É possível desenvolver Windows Form com o Visual Studio. Mas nem por isso o chamam de Windows Form Studio. E no caso do Flex Builder a diferença é mais acentuada: o produto final <strong>é</strong> Flash. E isso faz diferença. Tem um bocado de gente que gosta de dizer que faz &#8220;Flex&#8221; e não &#8220;Flash&#8221;. Muitos para tentar com isso gerar vantagens financeiras ou por orgulhos suspeitos, etc. Utilizando o framework do Flex para aplicações, ou desenvolvendo jogos e outras ferramentas que não fazem uso de Flex, o &#8220;studio&#8221; deve mesmo se chamar Flash Builder.</p>
<p>Não que o framework Flex não seja bom. Eu mesmo, pelo que percebi, gosto mais de Flex do que Keith Peters dá a entender. Mas de qualquer forma, já está na hora de começar acabar com essa confusão. E a iniciativa da Adobe é acertada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pedropauloalmeida.com.br/tecnologia/flash-vrs-flex_e-no-final-e-tudo-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updater &#8211; classes para lidar com o tempo no flash</title>
		<link>http://www.pedropauloalmeida.com.br/tecnologia/updater-classes-para-lidar-com-o-tempo-no-flash/</link>
		<comments>http://www.pedropauloalmeida.com.br/tecnologia/updater-classes-para-lidar-com-o-tempo-no-flash/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 14:48:11 +0000</pubDate>
		<dc:creator>Pedro Paulo</dc:creator>
				<category><![CDATA[Plataforma Flash]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[action script]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.pedropauloalmeida.com.br/?p=40</guid>
		<description><![CDATA[Olá.
Hoje eu gostaria de fazer meu primeiro post de códigos que desenvolvo, aqui no novo blog, e que podemk ser úteis a outras pessoas. Vou começar com duas classes que faço um uso considerável nos meus projetos em ActionScript 3.0. São as classes do package timeflow. Elas auxiliam no controle de ações que envolvem passagem [...]]]></description>
			<content:encoded><![CDATA[<p>Olá.<br />
Hoje eu gostaria de fazer meu primeiro post de códigos que desenvolvo, aqui no novo blog, e que podemk ser úteis a outras pessoas. Vou começar com duas classes que faço um uso considerável nos meus projetos em ActionScript 3.0. São as classes do package timeflow. Elas auxiliam no controle de ações que envolvem passagem do tempo. Vamos às classes e logo abaixo vou colocar alguns casos de uso para exemplificar seus usos.</p>
<p>Updater:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #3f5fbf;">/**
 * @author Pedro Paulo Almeida
 * For usage details please visit http://www.pedropauloalmeida.com.br
 * This software is free and you can use or modify it as you need to.
 */</span>
<span style="color: #9900cc; font-weight: bold;">package</span> br.com.pedropauloalmeida.timeflow <span style="color: #000000;">&#123;</span>
&nbsp;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">Event</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">EventDispatcher</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.utils</span>.<span style="color: #004993;">Timer</span>;
	<span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span>.<span style="color: #004993;">TimerEvent</span>;
&nbsp;
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> Updater extends <span style="color: #004993;">EventDispatcher</span> <span style="color: #000000;">&#123;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _interCall			<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _timer				<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Timer</span>;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _loops				<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _step				<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span>;
&nbsp;
		static <span style="color: #0033ff; font-weight: bold;">public</span> const ON_UPDATE_TIMER<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">String</span> 		= <span style="color: #990000;">'ON_UPDATE_TIMER'</span>;
		static <span style="color: #0033ff; font-weight: bold;">public</span> const ON_UPDATE_FINISHED<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">String</span> 	= <span style="color: #990000;">'ON_UPDATE_FINISHED'</span>;
&nbsp;
		<span style="color: #3f5fbf;">/**
		 * Constrói um novo objeto Updater.
		 * Este objeto será usado para as transações de intervalo de tempo.
		 * Ao construir ele tem um tempo default de intervalo de 10s.
		 * 
		 */</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> Updater<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">super</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>._interCall = <span style="color: #000000; font-weight:bold;">10000</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #009900;">//=========================================================================== Métodos de criação de timers:</span>
		<span style="color: #3f5fbf;">/**
		 * Cria um novo timer.
		 * @param	loops 	-&gt; número de vezes que o timer vai se repetir antes de se encerrar
		 * @param	sec 	-&gt; intervalo, em segundos, para o timer
		 */</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> createFiniteTimer<span style="color: #000000;">&#40;</span>loops<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">1</span>, sec<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span>.resetTimerSettings<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">try</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span>loops <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">throw</span> <span style="color: #0033ff; font-weight: bold;">new</span> UpdaterError<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;Criando um timer finito com loops = 0&quot;</span><span style="color: #000000;">&#41;</span>;				
				<span style="color: #0033ff; font-weight: bold;">this</span>._interCall 	= sec <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">1000</span>;
				<span style="color: #0033ff; font-weight: bold;">this</span>._loops 		= loops;
				<span style="color: #0033ff; font-weight: bold;">this</span>.doTimer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;">catch</span> <span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span>UpdaterError<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #009900;">//trace(&quot;catch: &quot; + e);				</span>
			<span style="color: #000000;">&#125;</span>			
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #3f5fbf;">/**
		 * Cria um timer 'infinito'
		 * @param	sec -&gt; intervalo, em segundos, para o timer
		 */</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> createInfiniteTimer<span style="color: #000000;">&#40;</span>sec<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span>.resetTimerSettings<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>._interCall = sec <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">1000</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>.doTimer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #3f5fbf;">/**
		 * Cria um novo timer, infinito, com intervalos de minuto.
		 * @param	min -&gt; de quantos em quantos minutos é o ciclo do timer
		 */</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> createInfiniteMinuteTimer<span style="color: #000000;">&#40;</span><span style="color: #004993;">min</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span>.resetTimerSettings<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>._interCall = <span style="color: #004993;">min</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">60000</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>.doTimer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #3f5fbf;">/**
		 * Cria um timer regressivo que roda de um step até &quot;zero&quot;.
		 * @param	loops -&gt; número de vezes que o timer vai se repetir
		 * @param	sec -&gt; intervalo do ciclo do timer em segundos
		 */</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> createRegressiveTimerUpTo<span style="color: #000000;">&#40;</span>loops<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">10</span>, sec<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span>.resetTimerSettings<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>._step		 	= loops;
			<span style="color: #0033ff; font-weight: bold;">this</span>._loops 		= loops;
			<span style="color: #0033ff; font-weight: bold;">this</span>._interCall		= sec <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">1000</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>.doTimer<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>	
&nbsp;
<span style="color: #009900;">//=========================================================================== Manipulação de timers:		</span>
		<span style="color: #3f5fbf;">/**
		 * Pára o timer deste Updater.
		 */</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> stopTimer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._timer == <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">return</span>;
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">running</span><span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">this</span>.endTimer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> pauseTimer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._timer <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #0033ff; font-weight: bold;">null</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">running</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">stop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
				<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">true</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">false</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> restartPausedTimer<span style="color: #000000;">&#40;</span>pro<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span> = <span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> success<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span> = <span style="color: #0033ff; font-weight: bold;">false</span>;
			<span style="color: #0033ff; font-weight: bold;">try</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._timer == <span style="color: #0033ff; font-weight: bold;">null</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">running</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #0033ff; font-weight: bold;">this</span>._step <span style="color: #000000; font-weight: bold;">&lt;</span>= <span style="color: #000000; font-weight:bold;">0</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #0033ff; font-weight: bold;">this</span>._interCall <span style="color: #000000; font-weight: bold;">&lt;</span>= <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">throw</span> <span style="color: #0033ff; font-weight: bold;">new</span> UpdaterError<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;Tentando restartar timer com step 0 ou interCall 0&quot;</span><span style="color: #000000;">&#41;</span>;
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">this</span>.doTimer<span style="color: #000000;">&#40;</span>pro<span style="color: #000000;">&#41;</span>;
				success = <span style="color: #0033ff; font-weight: bold;">true</span>;
			<span style="color: #000000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;">catch</span> <span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span>UpdaterError<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				success = <span style="color: #0033ff; font-weight: bold;">false</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">return</span> success;
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #3f5fbf;">/**
		 * Se o timer estiver rodando, manter o step e o target, mas com um novo
		 * tempo de intervalo de delay.
		 * @param	sec -&gt; novo intervalo do timer em andamento
		 * @param 	pro -&gt; se o timer tem contagem regressiva ou progressiva. Default = progressivo
		 */</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> modifyTimerIntervalTo<span style="color: #000000;">&#40;</span>sec<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Number</span>, pro<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span> = <span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">try</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight: bold;">!</span><span style="color: #0033ff; font-weight: bold;">this</span>.isRunning<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">throw</span> <span style="color: #0033ff; font-weight: bold;">new</span> UpdaterError<span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;Tentando modificar o intervalo de um timer que está parado&quot;</span><span style="color: #000000;">&#41;</span>;
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">this</span>._interCall = sec <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">1000</span>;
				<span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">stop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
				<span style="color: #0033ff; font-weight: bold;">this</span>.doTimer<span style="color: #000000;">&#40;</span>pro<span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span> <span style="color: #0033ff; font-weight: bold;">catch</span> <span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span>UpdaterError<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #009900;">// erro de reinicialização do timer:</span>
				<span style="color: #009900;">//trace(e);</span>
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> isRunning<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._timer == <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">false</span>;
			<span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">running</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #009900;">//=========================================================================== Private build timers:		</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> resetTimerSettings<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span>._step 				= <span style="color: #000000; font-weight:bold;">0</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>._interCall 		= <span style="color: #000000; font-weight:bold;">0</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>._loops 			= <span style="color: #000000; font-weight:bold;">0</span>;
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._timer <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">stop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
				<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">hasEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">TimerEvent</span>.<span style="color: #004993;">TIMER</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
					<span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">TimerEvent</span>.<span style="color: #004993;">TIMER</span>, timerStep<span style="color: #000000;">&#41;</span>;
					<span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">TimerEvent</span>.<span style="color: #004993;">TIMER</span>, regressiveStep<span style="color: #000000;">&#41;</span>;
				<span style="color: #000000;">&#125;</span>
				<span style="color: #0033ff; font-weight: bold;">this</span>._timer = <span style="color: #0033ff; font-weight: bold;">null</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> doTimer<span style="color: #000000;">&#40;</span>pro<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span> = <span style="color: #0033ff; font-weight: bold;">true</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span>._timer = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Timer</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._interCall, <span style="color: #0033ff; font-weight: bold;">this</span>._loops<span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#40;</span>pro<span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">?</span> <span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">TimerEvent</span>.<span style="color: #004993;">TIMER</span>, timerStep<span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">:</span> <span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">TimerEvent</span>.<span style="color: #004993;">TIMER</span>, regressiveStep<span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">TimerEvent</span>.<span style="color: #004993;">TIMER_COMPLETE</span>, endTimer<span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">start</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> endTimer<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">TimerEvent</span> = <span style="color: #0033ff; font-weight: bold;">null</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>.<span style="color: #004993;">hasEventListener</span><span style="color: #000000;">&#40;</span>ON_UPDATE_FINISHED<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">this</span>.<span style="color: #004993;">dispatchEvent</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#40;</span>ON_UPDATE_FINISHED<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span>.resetTimerSettings<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;		
		<span style="color: #000000;">&#125;</span>	
&nbsp;
<span style="color: #009900;">//=========================================================================== Event flow:		</span>
&nbsp;
		<span style="color: #3f5fbf;">/**
		 * Este método é chamado a cada ciclo do objeto timer
		 * @param	e -&gt; evento TimerEvent
		 */</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> timerStep<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">TimerEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span>._step<span style="color: #000000; font-weight: bold;">++</span>;
			<span style="color: #0033ff; font-weight: bold;">super</span>.<span style="color: #004993;">dispatchEvent</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#40;</span>ON_UPDATE_TIMER<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._loops <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight:bold;">0</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #0033ff; font-weight: bold;">this</span>._step == <span style="color: #0033ff; font-weight: bold;">this</span>._loops<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
				<span style="color: #0033ff; font-weight: bold;">this</span>._timer.<span style="color: #004993;">stop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
				<span style="color: #0033ff; font-weight: bold;">this</span>.endTimer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #000000;">&#125;</span>
		<span style="color: #000000;">&#125;</span>
&nbsp;
		<span style="color: #3f5fbf;">/**
		 * Este método é chamado a cada ciclo de um regressive timer
		 * @param	e -&gt; evento TimerEvent
		 */</span>
		<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> regressiveStep<span style="color: #000000;">&#40;</span>e<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">TimerEvent</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">this</span>._step<span style="color: #000000; font-weight: bold;">--</span>;
			<span style="color: #0033ff; font-weight: bold;">super</span>.<span style="color: #004993;">dispatchEvent</span><span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Event</span><span style="color: #000000;">&#40;</span>ON_UPDATE_TIMER<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>;
			<span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">this</span>._step == <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #0033ff; font-weight: bold;">this</span>.resetTimerSettings<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #009900;">//=========================================================================== Get Step:	</span>
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #0033ff; font-weight: bold;">get</span> step<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span> <span style="color: #000000;">&#123;</span> <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">this</span>._step; <span style="color: #000000;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #009900;">//=========================================================================== ToString:						</span>
		override <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">String</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #6699cc; font-weight: bold;">var</span> s<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">String</span> = <span style="color: #990000;">&quot;Updater.as:<span style="">\n</span>&quot;</span>;
			s <span style="color: #000000; font-weight: bold;">+</span>= <span style="color: #990000;">&quot;_interCall: &quot;</span> <span style="color: #000000; font-weight: bold;">+</span> _interCall.<span style="color: #004993;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">+</span> <span style="color: #990000;">&quot;<span style="">\n</span>&quot;</span>;
			s <span style="color: #000000; font-weight: bold;">+</span>= <span style="color: #990000;">&quot;_timer: &quot;</span> <span style="color: #000000; font-weight: bold;">+</span> _timer.<span style="color: #004993;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000; font-weight: bold;">+</span> <span style="color: #990000;">&quot;<span style="">\n</span>&quot;</span>;
			s <span style="color: #000000; font-weight: bold;">+</span>= <span style="color: #990000;">&quot;<span style="">\n</span><span style="">\n</span>&quot;</span>;
			<span style="color: #0033ff; font-weight: bold;">return</span> s;
		<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Agora a classe UpdaterError, para os casos de erro com a aplicação:</p>
<p>Updater Error:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #3f5fbf;">/**
 * @author Pedro Paulo Almeida
 * For usage details please visit http://www.pedropauloalmeida.com.br
 * This software is free and you can use or modify it as you need to.
 */</span>
<span style="color: #9900cc; font-weight: bold;">package</span> br.com.pedropauloalmeida.timeflow <span style="color: #000000;">&#123;</span>
&nbsp;
	<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> UpdaterError extends <span style="color: #004993;">Error</span> <span style="color: #000000;">&#123;</span>
&nbsp;
		<span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> UpdaterError<span style="color: #000000;">&#40;</span>msg<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">String</span>, id<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">int</span> = <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
			<span style="color: #0033ff; font-weight: bold;">super</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;UpdaterError: &quot;</span> <span style="color: #000000; font-weight: bold;">+</span> msg, id<span style="color: #000000;">&#41;</span>;
		<span style="color: #000000;">&#125;</span>
&nbsp;
	<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#125;</span></pre></div></div>

<h2>Usages</h2>
<p>Para os Usages vou tentar demonstrar as facilidades que a classe Updater têm sobre a classe Timer nativa no flash. Mas vamos pelo começo primeiro, hehe.<br />
A primeira coisa a se fazer é importar as classes:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #0033ff; font-weight: bold;">import</span> br.com.pedropauloalmeida.timeflow.<span style="color: #000000; font-weight: bold;">*</span>;</pre></div></div>

<p>Os dois primeiros métodos são semelhantes à classe Timer. Criam um timer que pode rodar por um determinado número de vezes ou até um número &#8220;n&#8221; de vezes:</p>
<h3>I &#8211; Simples uso da classe:</h3>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #009900;">// crio uma instância do Updater</span>
<span style="color: #6699cc; font-weight: bold;">var</span> updater<span style="color: #000000; font-weight: bold;">:</span>Updater = <span style="color: #0033ff; font-weight: bold;">new</span> Updater<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">// adiciono um listener para cada ciclo da contagem para o método &quot;stepTimer&quot;:</span>
updater.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span>Updater.ON_UPDATE_TIMER, stepTimer<span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">// adiciono um listener para o fim do ciclo da contagem para o método &quot;endTimer&quot;:</span>
updater.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span>Updater.ON_UPDATE_FINISHED, endTimer<span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #3f5fbf;">/* nesse caso eu crio um timer finito em um total de 10 loops que serão executados a cada
*  1 segundo. Note bem que nesse caso eu passo o tempo em SEGUNDOS e não em
*  milissegundos, como no Timer nativo do Flash. Isso porque normalmente eu geralmente
*  me sinto mais à vontade lendo tempos em segundos. Mas você pode ter valores menores
*  do que 1 segundo. Por exemplo, para meio segundo basta passar 0.5 */</span>
updater.createFiniteTimer<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span>, <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> stepTimer<span style="color: #000000;">&#40;</span>evt<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;o updater está no passo: &quot;</span> <span style="color: #000000; font-weight: bold;">+</span> updater.step<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> endTimer<span style="color: #000000;">&#40;</span>evt<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;o updater terminou sua contagem&quot;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Existem outros métodos de criação de timers, com comportamentos semelhantes aos demonstrados acima:<br />
createInfiniteTimer -&gt; cria um timer infinito<br />
createInfiniteMinuteTimer -&gt; cria um timer infinito de um número &#8216;x&#8217; em minutos<br />
Outra possibilidade é o timer regressivo, que explico abaixo:</p>
<h3>II &#8211; Timer Regressivo</h3>
<p>Você viu que pode<strong> obter em que momento da contagem do Updater ele se encontra com a propriedade &#8220;step&#8221;</strong>. Se você usa um timer progressivo, finito ou infinito, essa contagem começa com zero e vai até onde você especificar. Uma das coisas que a classe oferece é a contagem regressiva. Onde o step vai do número de loops total até 0 (zero). Basta chamar o método &#8216;createRegressiveTimerUpTo&#8217;.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #009900;">// crio uma instância do Updater</span>
<span style="color: #6699cc; font-weight: bold;">var</span> updater<span style="color: #000000; font-weight: bold;">:</span>Updater = <span style="color: #0033ff; font-weight: bold;">new</span> Updater<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">// adiciono um listener para cada ciclo da contagem para o método &quot;stepTimer&quot;:</span>
updater.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span>Updater.ON_UPDATE_TIMER, stepTimer<span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">// adiciono um listener para o fim do ciclo da contagem para o método &quot;endTimer&quot;:</span>
updater.<span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span>Updater.ON_UPDATE_FINISHED, endTimer<span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #009900;">// Crio uma contagem regressiva de '10' a '0' com intervalos de 1 segundo:</span>
updater.createRegressiveTimerUpTo<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span>, <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> stepTimer<span style="color: #000000;">&#40;</span>evt<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;o updater está no passo: &quot;</span> <span style="color: #000000; font-weight: bold;">+</span> updater.step<span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #339966; font-weight: bold;">function</span> endTimer<span style="color: #000000;">&#40;</span>evt<span style="color: #000000; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span><span style="color: #000000; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
	<span style="color: #004993;">trace</span><span style="color: #000000;">&#40;</span><span style="color: #990000;">&quot;o updater terminou sua contagem&quot;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Interessante não é? Outro método que senti falta no Timer nativo do flash foi a capacidade de dar um &#8220;pause&#8221; no Timer. Isso não fico de fora da nossa classe Updater:</p>
<h3>III &#8211; Pause no Timer e Inversão de sentido da contagem</h3>
<p>Para pausar um timer, regressivo ou não, basta chamar o método &#8216;pauseTimer&#8217;. Isso vai fazer com que o Updater pare o Timer interno. Mas vai manter os &#8217;steps&#8217; e &#8216;loops&#8217; da classe intactos. Para restartar o Timer de onde ele parou, basta chamar o método &#8216;restartPausedTimer&#8217;. Caso você esteja usando um timer de contagem regressiva, passe um parâmetro &#8216;false&#8217; para o método, para que a contagem prossiga regredindo.</p>
<p>Caso você deseje que o timer se inverta, basta omitir o parâmetro. Como você pode ver, é possível transformar um timer de progressivo em regressivo apenas pausando e em seguida restartando o updater de acordo com o parâmetro que você especificar no restart!</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #009900;">// pausa o timer:</span>
<span style="color: #6699cc; font-weight: bold;">var</span> updater = <span style="color: #0033ff; font-weight: bold;">new</span> Updater<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
updater.createFiniteTimer<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">10</span>, <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000000;">&#41;</span>;
&nbsp;
<span style="color: #009900;">// pausando o timer:</span>
updater.pauseTimer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">// caso queira reiniciar, basta chamar</span>
updater.restartPausedTimer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
<span style="color: #009900;">// se o timer for de contagem regressiva, parâmetro 'false':</span>
updater.restartPausedTimer<span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">false</span><span style="color: #000000;">&#41;</span>;</pre></div></div>

<h3>IV &#8211; Modificar o intervalo de contagem com o Updater em andamento</h3>
<p>Um dos features que mais gostei dessa classe, foi poder simplesmente mudar o &#8220;andamento&#8221; do timer em tempo de execução. Isso eu considero algo pra lá de útil e o Timer nativo do Flash também não oferece.<br />
Para alterar o intervalo de execução, basta chamar o método &#8216;modifyTimerIntervalTo&#8217;, passando o novo intervalo em segundos e, novamente, &#8216;false&#8217; se você estiver usando um timer regressivo.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #3f5fbf;">/* altero o andamento do updater para meio segundo. Como o timer nesse
exemplo é progressivo, omito o segundo parâmetro do método */</span>
updater.modifyTimerIntervalTo<span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000000;">&#41;</span>;</pre></div></div>

<h3>V &#8211; Tratamentos de Erro</h3>
<p>Como você pode ver no código, temos vários &#8216;try/catch&#8217; para tratamentos de erro. A classe UpdaterError é um extends da classe Error do Flash. Você pode descomentar e fazer tratamentos de erro customizados de acordo com suas necessidades. Pode também modificar a estrutura, fazendo com que o método dê o throw e o try/catch fique onde estiver a instância&#8230; enfim: você decide.</p>
<h3>VI &#8211; Código fonte em arquivo texto </h3>
<p>Caso você tenha tido problemas ou erros devido ao GesHi que uso para exibir os códigos no HTML, você pode clicar <a href="http://www.pedropauloalmeida.com.br/wp-content/uploads/2009/07/updater_ppalmeida_com_br.zip">aqui</a> e baixar as classes em formato .as.</p>
<p>Qualquer dúvida, basta postar um comentário ou enviar um email para blog@pedropauloalmeida.com.br</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pedropauloalmeida.com.br/tecnologia/updater-classes-para-lidar-com-o-tempo-no-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mastering Twitter</title>
		<link>http://www.pedropauloalmeida.com.br/insanidades/mastering-twitter/</link>
		<comments>http://www.pedropauloalmeida.com.br/insanidades/mastering-twitter/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 01:50:32 +0000</pubDate>
		<dc:creator>Pedro Paulo</dc:creator>
				<category><![CDATA[Insanidades]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.pedropauloalmeida.com.br/?p=35</guid>
		<description><![CDATA[Tem certas horas que eu fico me perguntando: até onde as empresas de treinamento aqui no Brasil têm coragem de ir para conseguirem bater suas metas de faturamento? A Impacta Tecnologia parece querer bater suas metas a qualquer custo. Nem que seja dando treinamento de Twitter. Isso mesmo. Você não leu errado: treinamento de marketing [...]]]></description>
			<content:encoded><![CDATA[<p>Tem certas horas que eu fico me perguntando: até onde as empresas de treinamento aqui no Brasil têm coragem de ir para conseguirem bater suas metas de faturamento? A Impacta Tecnologia parece querer bater suas metas a qualquer custo. Nem que seja dando treinamento de Twitter. Isso mesmo. Você não leu errado: treinamento de marketing no twiiter.</p>
<p>Bom. Há quem, com certeza, possui uma teoria de marketing &#8211; ou de física quântica &#8211; para justificar essa empreitada. Mas continua a me causar gargalhadas só de imaginar um Twitter Show Day heheehehehe.</p>
<div id="attachment_36" class="wp-caption alignnone" style="width: 547px"><a href="http://www.pedropauloalmeida.com.br/wp-content/uploads/2009/07/twiiter_mastering.jpg"><img class="size-full wp-image-36" title="twiiter_mastering" src="http://www.pedropauloalmeida.com.br/wp-content/uploads/2009/07/twiiter_mastering.jpg" alt="Mastering Twitter na Impacta" width="537" height="440" /></a><p class="wp-caption-text">Mastering Twitter na Impacta</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.pedropauloalmeida.com.br/insanidades/mastering-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Colunas iMasters</title>
		<link>http://www.pedropauloalmeida.com.br/tecnologia/colunas-imasters/</link>
		<comments>http://www.pedropauloalmeida.com.br/tecnologia/colunas-imasters/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 03:06:07 +0000</pubDate>
		<dc:creator>Pedro Paulo</dc:creator>
				<category><![CDATA[Plataforma Flash]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.pedropauloalmeida.com.br/?p=15</guid>
		<description><![CDATA[Já tem um longo tempo que não tenho contato com o pessoal do iMasters. Mas é interessante a força do portal de tecnologia. Até hoje recebo pedidos de e-mail sobre as colunas que escrevi por lá já há algum (bom) tempo.
A equipe do iMasters sempre foi gentil e muito generosa comigo. E tenho uma ótica [...]]]></description>
			<content:encoded><![CDATA[<p>Já tem um longo tempo que não tenho contato com o pessoal do <a title="iMasters" href="http://www.imasters.com.br/" target="_blank">iMasters</a>. Mas é interessante a força do portal de tecnologia. Até hoje recebo pedidos de e-mail sobre as colunas que escrevi por lá já há algum (bom) tempo.</p>
<p>A equipe do iMasters sempre foi gentil e muito generosa comigo. E tenho uma ótica muito positiva de todos. Os arquivos das colunas estão aí. Com as grandes transformações do ActionScript quando migrou de 2.0 para 3.0 é provável que muitos apontem essas vídeo-aulas como obsoletas. Até concordo. Mas, como disse, ainda temos muitos iniciantes procurando materiais básicos para começar com flash.</p>
<p>Então lá vai:</p>
<ul>
<li><a href="/wp-content/uploads/2009/07/imasters/tags_html.zip" target="_blank">HTML Tags</a></li>
<li><a href="/wp-content/uploads/2009/07/imasters/LoadPP.zip" target="_blank">LoadPP -arquivos externos no flash</a></li>
<li><a href="/wp-content/uploads/2009/07/imasters/a_classe_tween.zip" target="_blank">A classe Tween &#8211; parte I</a></li>
<li><a href="/wp-content/uploads/2009/07/imasters/classe_tween_easeing.zip" target="_blank">A classe Tween &#8211; parte II</a></li>
</ul>
<p>Qualquer dúvida, basta postar um comentário!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pedropauloalmeida.com.br/tecnologia/colunas-imasters/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Google Developer Day 2009</title>
		<link>http://www.pedropauloalmeida.com.br/tecnologia/google-developer-day-2009/</link>
		<comments>http://www.pedropauloalmeida.com.br/tecnologia/google-developer-day-2009/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 16:11:48 +0000</pubDate>
		<dc:creator>Pedro Paulo</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tecnologia]]></category>

		<guid isPermaLink="false">http://www.pedropauloalmeida.com.br/?p=10</guid>
		<description><![CDATA[Um evento do Google é claro que esperamos com ansiedade. E com o GDD 2009 não foi diferente. Lotado, todos animadíssimos para saber o que a maior empresa de Internet do mundo tem a dizer sobre os próximos 365 dias. Encontrei amigos de trabalhos passados: todos muito vidrados nas portas dos auditórios, esperando para que [...]]]></description>
			<content:encoded><![CDATA[<p>Um evento do Google é claro que esperamos com ansiedade. E com o GDD 2009 não foi diferente. Lotado, todos animadíssimos para saber o que a maior empresa de Internet do mundo tem a dizer sobre os próximos 365 dias. Encontrei amigos de trabalhos passados: todos muito vidrados nas portas dos auditórios, esperando para que o evento tomasse início.</p>
<p>Por minha vez, sempre tive sorte com produtos do Google. Ganhei minha conta do Gmail muito cedo aqui no Brasil. Da própria Google. Não foi por convite pois à época, acho que nem convite disponível havia ainda para se distribuir. Lembro que alguns espertinhos tentaram vender uma conta de e-mail do Google (será que alguém comprou????).</p>
<p>O Google discorreu sobre várias novas tecnologias que estão surgindo, com foco para HTML 5, Android e código aberto. Mas o que chamou mesmo a atenção foi uma outra &#8220;onda&#8221;.</p>
<p>4 Cérebros. Esse deve ser o requisito mínimo para fazer parte da equipe de desenvolvimento do novo produto do Google, o <a title="Wave rocks!!" href="http://wave.google.com" target="_blank">Google Wave</a>. Idealizado pela equipe australiana da Gigante, trata-se da resposta do Google à pergunta: &#8220;e se o e-mail fosse inventado hoje? Como seria?&#8221;.</p>
<p>Muito já se falou e se especulou sobre o Wave mas isso não torna a ferramenta menos impressioante. O vídeo que está na home do Wave com demonstrações do produto dão mostra do quão poderoso o produto tende a ser. Acesso em tempo real e um quase mágico sistema de integração de mensagens e usuários que é possível ver vários colaboradores, em tempo real, editando um mesmo &#8220;e-mail&#8221; Wave. Fiquei como quando vi pela primeira vez os recursos do iPhone: confuso e estupefato. &#8220;Como é possível?&#8221; foi uma pergunta que me repeti diversas vezes no GDD desse ano.</p>
<p>O legal é que todos que preencheram a ficha de feedback ganharam um acesso ao Wave ainda em &#8220;developer preview&#8221;. Muito legal e muito bug ainda pra resolver. Mas com os quads plugados diretamente na nuca eles vão resolver, com certeza. Outra coisa na qual o Google também aposta é no código aberto e, no caso do Wave, a API é generosa. Muitos robos e aplicações devem surgir a uma velocidade grande. Ponto para o Google nisso também.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pedropauloalmeida.com.br/tecnologia/google-developer-day-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
