<?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>Armando Schiavon Dias</title>
	<atom:link href="http://www.armandoschiavondias.com.br/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.armandoschiavondias.com.br</link>
	<description>Profissional Especializado em Flash, Flex, Air &#38; FMIS</description>
	<lastBuildDate>Tue, 26 Jan 2010 22:55:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Eu no Campus Party Brasil 2010</title>
		<link>http://www.armandoschiavondias.com.br/?p=397</link>
		<comments>http://www.armandoschiavondias.com.br/?p=397#comments</comments>
		<pubDate>Tue, 26 Jan 2010 22:55:28 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Campus Party]]></category>

		<guid isPermaLink="false">http://www.armandoschiavondias.com.br/?p=397</guid>
		<description><![CDATA[<p style="text-align: left;">Hoje, 26/01/2010, aconteceu no Campus Party 2010 a minha palestra sobre Desenvolvimento de Jogos em Flash:</p>
<p style="text-align: center;"></p>
<p>Foi bem legal, o público estava bastante interessado - ou bastante curioso, no caso daqueles que não sabem programar&#8230; - e eu tive a oportunidade de mostrar algumas dicas sobre &#8220;como&#8221; montar um jogo de plataforma, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Hoje, <strong>26/01/2010</strong>, aconteceu no <strong>Campus Party 2010</strong> a minha palestra sobre <strong>Desenvolvimento de Jogos em Flash</strong>:</p>
<p style="text-align: center;"><img class="size-full wp-image-399 aligncenter" title="Campus Party 2010" src="http://www.armandoschiavondias.com.br/wp-content/uploads/2010/01/CampusParty2010Flash.jpg" alt="Campus Party 2010" width="500" height="350" /></p>
<p>Foi bem legal, o público estava bastante interessado -<em> ou bastante curioso, no caso daqueles que não sabem programar&#8230; </em>- e eu tive a oportunidade de mostrar algumas dicas sobre &#8220;como&#8221; montar um jogo de plataforma, dicas de otimização de código e algumas dicas gerais.</p>
<p>Falando nisso, seguem os arquivos usados na palestra:</p>
<ul>
<li><strong><a title="Jogo do Mário..." href="http://www.armandoschiavondias.com.br/exemplos/jogodomario_campusparty2010.zip" target="_self">Jogo do Mário</a></strong> ( Base para um jogo de plataforma )</li>
<li><strong><a title="Dicas de Otimização" href="http://www.armandoschiavondias.com.br/exemplos/DicasDeOtimizacaoDeCodigo.zip" target="_self">Dicas de Otimização de Código</a></strong></li>
</ul>
<p>No próximo Sábado, <strong>30/01/2010</strong>, às <strong>15 horas</strong>, irei falar de <strong>Adobe Air</strong>, com pitadas de <strong>Adobe Flex</strong> e <strong>FMIS</strong>!<br />
Além disso, vou mostrar um pouco mais do <strong>RPG 2ic</strong> que ainda está em <strong><a title="RPG Online Development" href="http://www.rpgonline.com.br/development/" target="_self">desenvolvimento</a></strong>!<br />
Não percam! ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=397</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Convertendo Código Simples em Classe!</title>
		<link>http://www.armandoschiavondias.com.br/?p=385</link>
		<comments>http://www.armandoschiavondias.com.br/?p=385#comments</comments>
		<pubDate>Sun, 12 Jul 2009 02:38:51 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Dica]]></category>
		<category><![CDATA[Fácil]]></category>

		<guid isPermaLink="false">http://www.armandoschiavondias.com.br/?p=385</guid>
		<description><![CDATA[<p style="TEXT-ALIGN: justify">Depois de realizar uns movimentos básicos no Flash via teclado, chegou a hora de incrementar um pouco mais aquele código! Que tal colocá-lo em uma classe, para que possa ser reutilizado inúmeras vezes&#8230;? E quando digo inúmeras vezes, significa várias vezes em projetos diferentes ou no mesmo projeto! Primeiro, você vai precisar do código escrito naquela [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Depois de realizar uns movimentos básicos no <strong>Flash</strong> via teclado, chegou a hora de incrementar um pouco mais aquele código! Que tal colocá-lo em uma classe, para que possa ser <strong><span style="text-decoration: underline;">reutilizado</span></strong> inúmeras vezes&#8230;? E quando digo <strong>inúmeras vezes</strong>, significa <strong>várias vezes</strong> em <strong>projetos diferentes</strong> ou no <strong>mesmo projeto</strong>! Primeiro, você vai precisar do código escrito naquela dica ( &#8220;<a title="Movimentos básicos no Flash via teclado" href="http://www.armandoschiavondias.com.br/index.php/2009/06/movimentos-basicos-no-flash-via-teclado/" target="_blank">Movimentos básicos no Flash via teclado</a>&#8221; ). Descompacte-o e em seguida, crie uma pasta onde está o seu <strong>FLA</strong> para acomodar suas classes. Eu decidi chamá-la de <strong>actionScript</strong>.</p>
<div id="attachment_390" class="wp-caption aligncenter" style="width: 480px"><img class="size-full wp-image-390" title="Criando uma pasta para a sua classe!" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/07/tutorial2_001.jpg" alt="O nome da pasta é importante!" width="470" height="230" /><p class="wp-caption-text">O nome da pasta é importante!</p></div>
<p style="TEXT-ALIGN: justify">Abra o <strong>Flash</strong>, vá no menu <strong>File</strong>, escolha <strong>New </strong>e finalmente, escolha <strong>ActionScript File</strong>. O nome do seu arquivo também importa na programação &#8211; eu decidi chamar o meu de <strong>basicGame.as </strong>- e agora, vamos começar a programar!</p>
<p style="TEXT-ALIGN: justify"><span id="more-385"></span></p>
<p style="TEXT-ALIGN: justify">Primeiro, identifique o pacote de classes com o nome da pasta que você criou e crie a classe com o mesmo nome do seu arquivo &#8220;<strong>.AS</strong>&#8220;. Seu arquivo deve ficar mais ou menos assim:</p>
<pre class="brush: php;">package actionScript {
  public class basicGame {
    // Vamos inserir o código do outro arquivo aqui!
  }
}</pre>
<p style="TEXT-ALIGN: justify">Diferente de se programar na <strong>timeline</strong>, é necessário cuidar da <strong>importação de bibliotecas</strong> quando se está trabalhando com uma classe. Vou importar 3 bibliotecas básicas - <strong>Event</strong>, <strong>MouseEvent</strong> e <strong>KeyboardEvent</strong> &#8211; e mesmo que eu não esteja usando <strong>MouseEvent </strong>neste momento, eu pretendo usá-la em breve. Então o código fica assim:</p>
<pre class="brush: php;">package actionScript {
   import flash.events.KeyboardEvent;
   import flash.events.MouseEvent;
   import flash.events.Event;
  public class basicGame {
    // Vamos inserir o código do outro arquivo aqui!
  }
}</pre>
<p style="TEXT-ALIGN: justify">Depois, copie o código criado no <strong>FLA</strong> &#8220;<strong>movimentospeloteclado.fla</strong>&#8221; dentro da sua classe. Mas se você tentar rodar agora, vários erros de compilação irão surgir. O código copiado tem algumas ações realizadas em tempo de execução, o que é <strong>impossível</strong> para uma classe. Devemos passar estes códigos para uma <strong>função construtora</strong>, que é chamada automaticamente no momento de <strong>criação da instância</strong> da classe.</p>
<p style="TEXT-ALIGN: justify">Basta nomear uma <strong>função</strong> com <strong>o mesmo nome</strong> da classe, para ela ser uma <strong>função construtora</strong>!</p>
<pre class="brush: php;">package actionScript {
   import flash.events.KeyboardEvent;
   import flash.events.MouseEvent;
   import flash.events.Event;
  public class basicGame {
    public function basicGame():void {
      // Conteúdo da Função!
    }
  }
}</pre>
<p> Vamos recapitular algumas coisas&#8230; O nosso <strong>código original </strong>adicionava três <strong>Listeners</strong> ao <strong>Stage</strong> ( <em>Um para detectar o &#8220;<strong>pressionar</strong>&#8221; de um <strong>botão do teclado</strong>, outro para detectar o &#8220;<strong>soltar</strong>&#8221; de um <strong>botão do teclado</strong> e o outro iria ser executado na velocidade do <strong>framerate</strong>, com a missão de realizar as ações necessárias </em>) e controlava um <strong>MovieClip </strong>chamado <strong>bodyMovie</strong>, movendo-o de acordo com as setas do teclado. Mas a nossa classe não tem <strong>stage</strong>, e dentro dela, também não há um <strong>MovieClip</strong> chamado <strong>bodyMovie</strong>, pois ele está na timeline do <strong>Flash</strong>. Como resolver isto&#8230;?</p>
<p style="TEXT-ALIGN: justify">Vamos adicionar <strong>dois parâmetros</strong> na <strong>função construtora</strong>. O primeiro parâmetro será a referência do <strong>MovieClip </strong>a ser controlado, e o segundo, a referência do <strong>stage</strong>. Depois de recebê-los como <strong>parâmetro</strong>, devemos guardá-los em <strong>variáveis privadas</strong> que toda a classe possa enxergar, à qualquer momento. O código fica mais ou menos assim:</p>
<pre class="brush: php;">package actionScript {

 import flash.events.KeyboardEvent;
 import flash.events.MouseEvent;
 import flash.events.Event;  

public class basicGame {

  private var myChar:Object;
  private var myRoot:Object;

  public function basicGame(c:Object,s:Object):void {
   myChar = c;
   myRoot = s;
  }

 }

} </pre>
<p style="TEXT-ALIGN: justify">Na hora de completar a nossa classe com o código original do artigo anterior, você não pode esquecer de trocar toda a referência à <strong>bodyMovie </strong>pela variável <strong>myChar</strong> e toda referência ao <strong>stage</strong> pela variável <strong>myRoot</strong>. O código completo desta dica fica assim: </p>
<pre class="brush: php;">package actionScript {

 import flash.events.KeyboardEvent;
 import flash.events.MouseEvent;
 import flash.events.Event;  

public class basicGame {

  private var myChar:Object;
  private var myRoot:Object;
  private var pressLeft:Boolean = new Boolean(false);
  private var pressUp:Boolean = new Boolean(false);
  private var pressRight:Boolean = new Boolean(false);
  private var pressDown:Boolean = new Boolean(false);

  public function basicGame(c:Object,s:Object):void {
   myChar = c;
   myRoot = s;
   myRoot.addEventListener(KeyboardEvent.KEY_DOWN, pressButtonDown);
   myRoot.addEventListener(KeyboardEvent.KEY_UP, pressButtonUp);
   myRoot.addEventListener(Event.ENTER_FRAME, runIt);
  }

  private function pressButtonDown(event:KeyboardEvent):void {
   switch (event.keyCode) {
    case 37 : //ESQUERDA;
     pressLeft = true;
     break;
    case 38 : //CIMA;
     pressUp = true;
     break;
    case 39 : //DIREITA;
     pressRight = true;
     break;
    case 40 : //BAIXO;
     pressDown = true;
     break;
   }
  }

  private function pressButtonUp(event:KeyboardEvent):void {
   switch (event.keyCode) {
    case 37 : //ESQUERDA;
     pressLeft = false;
     break;
    case 38 : //CIMA;
     pressUp = false;
     break;
    case 39 : //DIREITA;
     pressRight = false;
     break;
    case 40 : //BAIXO;
     pressDown = false;
     break;
   }
  }

  private function runIt(e:Event):void {
   if (pressLeft) {
    if (myChar.x &gt; 0) {
     myChar.x -= 5;
    }
   }
   if (pressRight) {
    if (myChar.x &lt; 400) {
     myChar.x += 5;
    }
   }
   if (pressUp) {
    if (myChar.y &gt; 0) {
     myChar.y -= 5;
    }
   }
   if (pressDown) {
    if (myChar.y &lt; 300) {
     myChar.y += 5;
    }
   }
  }

 }

} </pre>
<p>Agora é só importar a sua classe no <strong>Flash</strong> e criar uma <strong>instância</strong> dela! Então, na <strong>timeline</strong> do seu arquivo <strong>FLA</strong>, faça o seguinte:</p>
<pre class="brush: php;">import actionScript.basicGame;
var obj:basicGame = new basicGame(this.bodyMovie,stage);</pre>
<p>Desta forma, o seu <strong>Flash com classe</strong> estará fazendo exatamente a mesma coisa do <strong>Flash do exemplo anterior</strong>. Mas agora, você pode instanciá-lo facilmente, quantas vezes você quiser. Apenas como exemplo, dupliquei o nosso <strong>MovieClip</strong>, pintei ele de diversas cores com a propriedade <strong>Tint </strong>e redimensionei aleatoriamente. Agora, é fácil controlar os novos <strong>MovieClips</strong>, em poucas linhas:</p>
<pre class="brush: php;">import actionScript.basicGame;

var obj1:basicGame = new basicGame(this.bodyMovie1,stage);
var obj2:basicGame = new basicGame(this.bodyMovie2,stage);
var obj3:basicGame = new basicGame(this.bodyMovie3,stage);
var obj4:basicGame = new basicGame(this.bodyMovie4,stage);</pre>
<p style="text-align: justify;">Para experimentar, clique no <strong>Flash </strong>abaixo ( para o <strong>Browser </strong>dar foco ao <strong>Flash</strong> ) e use as setas do teclado para controlar os <strong>4 MovieClips</strong>. Note que os <strong>MovieClips </strong>se mexem juntos, até que eles encontrem o limite nos cantos do <strong>Flash</strong>.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.armandoschiavondias.com.br/exemplos/movimentospeloteclado2.swf" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://www.armandoschiavondias.com.br/exemplos/movimentospeloteclado2.swf"></embed></object> </p>
<p>Se desejar, <strong><a title="Download do Exemplo desta Dica!" href="http://www.armandoschiavondias.com.br/exemplos/movimentospeloteclado2.zip" target="_blank">clique aqui e baixe este exemplo</a></strong> completo, salvo em <strong>Flash CS3</strong>. E até a próxima dica!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=385</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sustain Júnior &#8211; Júnior Bom de Bola</title>
		<link>http://www.armandoschiavondias.com.br/?p=362</link>
		<comments>http://www.armandoschiavondias.com.br/?p=362#comments</comments>
		<pubDate>Fri, 03 Jul 2009 15:09:57 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Games em Flash]]></category>
		<category><![CDATA[Flash Games]]></category>
		<category><![CDATA[Sustain Júnior]]></category>

		<guid isPermaLink="false">http://www.armandoschiavondias.com.br/?p=362</guid>
		<description><![CDATA[<p class="wp-caption-text">Abertura do Jogo</p>
<p style="text-align: justify;">Desenvolvido na Timepix Interactive em Novembro de 2008, com 3D de Willian Lopes, Design de Daniel Cicarelli e Direção de Marcelo Fragoso, Júnior Bom de Bola é um jogo simples e agradável. Tirando a parte de 3D e Layout, o desenvolvimento do código foi feito em apenas 3 dias. Só não foi mais rápido, [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_363" class="wp-caption alignright" style="width: 310px"><img class="size-full wp-image-363" title="Tela de Abertura - Júnior Bom de Bola" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/07/sustainjuniorbomdebola001.jpg" alt="Abertura do Jogo" width="300" height="200" /><p class="wp-caption-text">Abertura do Jogo</p></div>
<p style="text-align: justify;">Desenvolvido na <strong><a title="Timepix Interactive" onclick="javascript:pageTracker._trackPageview('/outgoing/www.timepix.com.br');" href="http://www.timepix.com.br" target="_blank">Timepix Interactive</a></strong> em Novembro de 2008, com 3D de <strong>Willian Lopes</strong>, Design de <strong>Daniel Cicarelli</strong> e Direção de <strong>Marcelo Fragoso</strong>, <strong>Júnior Bom de Bola</strong> é um jogo simples e agradável. Tirando a parte de <strong>3D</strong> e <strong>Layout</strong>, o desenvolvimento do código foi feito em apenas 3 dias. Só não foi mais rápido, pois houve uma mudança de comportamento do personagem: Na primeira versão, o <strong>Júnior </strong>corria para se posicionar onde o mouse estava e chutava no momento do clique do mouse. Na prática, deixou o jogo difícil para crianças -<em> público alvo do jogo </em>- e então, isso foi alterado. Na segunda versão, <strong>Júnior </strong>passou a <strong>sempre</strong> estar onde o mouse está, por mais rápido que o mouse se mexa.</p>
<div id="attachment_364" class="wp-caption alignleft" style="width: 310px"><img class="size-full wp-image-364" title="Tela do Jogo - Júnior Bom de Bola" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/07/sustainjuniorbomdebola002.jpg" alt="Júnior em Ação!" width="300" height="200" /><p class="wp-caption-text">Júnior em Ação!</p></div>
<p style="text-align: justify;">Então use o mouse para posicionar o <strong>Júnior </strong>próximo da bola e clique para chutar. Caso a bola esteja alta demais, em vez de chutar, <strong>Júnior </strong>dá uma cabeçada. O objetivo é manter a bola no ar, o máximo possível. A partir de 10 &#8220;embaixadinhas&#8221; o jogo já compreende que o jogador aprendeu a jogar e passa a elogiá-lo. Se quiser desligar/ligar a música ambiente, basta clicar no texto localizado no canto superior direito!</p>
<p style="text-align: justify;">Quantas embaixadinhas você é capaz de fazer&#8230;? <strong><a title="Sustain Júnior - Júnior Bom de Bola" href="http://www.armandoschiavondias.com.br/games/sustain_juniorbomdebola.htm" target="_blank">Clique aqui</a></strong> e experimente este jogo!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=362</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sustain Júnior &#8211; Júnior no Espaço</title>
		<link>http://www.armandoschiavondias.com.br/?p=354</link>
		<comments>http://www.armandoschiavondias.com.br/?p=354#comments</comments>
		<pubDate>Fri, 03 Jul 2009 14:45:45 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Games em Flash]]></category>
		<category><![CDATA[Flash Games]]></category>
		<category><![CDATA[Sustain Júnior]]></category>

		<guid isPermaLink="false">http://www.armandoschiavondias.com.br/?p=354</guid>
		<description><![CDATA[<p style="TEXT-ALIGN: justify">Desenvolvido na Timepix Interactive em Junho de 2008, com 3D de David Orestes, Design de Daniel Cicarelli e Direção de Marcelo Fragoso, Júnior no Espaço foi o primeiro jogo profissional em Action Script 3 que eu programei - antes, era usado Action Script 2 por causa da compatibilidade do Flash Player instalado dentro das empresas [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Desenvolvido na <strong><a title="Timepix Interactive" onclick="javascript:pageTracker._trackPageview('/outgoing/www.timepix.com.br');" href="http://www.timepix.com.br" target="_blank">Timepix Interactive</a></strong> em Junho de 2008, com 3D de <strong>David Orestes</strong>, Design de <strong>Daniel Cicarelli</strong> e Direção de <strong>Marcelo Fragoso</strong>, <strong>Júnior no Espaço</strong> foi o primeiro jogo profissional em <strong>Action Script 3</strong> que eu programei -<em> antes, era usado <strong>Action Script 2</strong> por causa da compatibilidade do <strong>Flash Player </strong>instalado dentro das empresas dos clientes.</em></p>
<div id="attachment_356" class="wp-caption alignleft" style="width: 310px"><img class="size-full wp-image-356 " title="Tela de Abertura - Júnior no Espaço" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/07/sustainjuniornoespaco001.jpg" alt="Tela de Abertura" width="300" height="200" /><p class="wp-caption-text">Abertura do Jogo</p></div>
<p style="TEXT-ALIGN: justify">Foi muito prazeroso montar este jogo, diante da liberdade criativa que tivemos. Nele, <strong>Júnior </strong>pilota uma nave espacial com lasers &#8220;reconstrutores&#8221;, que são capazes de reciclar o lixo espacial para em seguida, serem atraídos para uma estação espacial de reciclagem. Então, para o jogo não se tornar repetitivo, criamos não um, mas três dispositivos para serem utilizados pelo jogador: Um <strong>escudo protetor</strong>, um <strong>laser </strong>rápido e econômico e um <strong>canhão laser </strong>poderoso e lento.</p>
<p style="TEXT-ALIGN: justify">Então você deve controlar a nave com as <strong>setas do teclado</strong>, segurar a <strong>tecla Z</strong> para acionar o escudo (<em> Enquanto o escudo estiver ativado, sua nave pode atravessar os obstáculos sem tomar dano</em> ), segurar a <strong>tecla X</strong> para um laser rápido, econômico e contínuo, ou ainda, segurar a <strong>tecla C</strong> para carregar o canhão e em seguida soltar a tecla para um tiro muito mais poderoso.</p>
<p style="TEXT-ALIGN: justify">Detalhe para o canhão: A potência do disparo está ligado ao tempo que você segurou a <strong>tecla C</strong>. Observe a barra de energia de tiro ao segurar a <strong>tecla C. </strong>Ela vai sendo consumida por uma barra vermelha, indicando o quanto de energia você está reservando para aquele disparo. Quando a barra vermelha começar a piscar, significa que já reservou o mínimo necessário para um disparo de canhão. Mas você pode segurar por mais tempo, se quiser. E caso você solte a <strong>tecla C </strong>antes dessa barra piscar, o disparo de canhão é cancelado.</p>
<div id="attachment_357" class="wp-caption alignright" style="width: 310px"><img class="size-full wp-image-357  " title="Tela de Jogo - Júnior no Espaço" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/07/sustainjuniornoespaco002.jpg" alt="Tela de Jogo" width="300" height="200" /><p class="wp-caption-text">Júnior em ação!</p></div>
<p style="TEXT-ALIGN: justify">Além disso, você tem três barras de energia para administrar. <strong>Energia</strong> é utilizada pelo sistema básico da nave, então ela vai sendo consumida lentamente durante a viagem ou rapidamente, quando a nave se choca contra algum obstáculo. <strong>Escudo </strong>é uma barra que controla o uso do escudo protetor e <strong>Laser</strong>, é consumido no uso do <strong>laser </strong>ou do <strong>canhão</strong>. Para encher estas barras, é necessário coletar as latas de <strong>Sustain Júnior</strong> pelo caminho.</p>
<p style="TEXT-ALIGN: justify">Quanto aos obstáculos, <strong>Pneus Velhos</strong> e <strong>Latas </strong>são recolhidos pela estação espacial de reciclagem, então você não corre o risco de chocar a nave contra elas, depois da restauração. Isso já não acontece com os asteróides, já que eles ganham <strong>vida</strong> sob o efeito do laser &#8220;reconstrutor&#8221; se transformando em pequenos planetas. Então, após restaurar um asteróide, saia da frente ou atravesse-o usando o <strong>escudo </strong>protetor!</p>
<p style="TEXT-ALIGN: justify">Como foi o meu primeiro jogo em <strong>Action Script 3</strong>, o gerenciamento de memória não ficou &#8220;ideal&#8221; &#8211; <em>em computadores mais modestos ele ficou um pouco lento</em> &#8211; e um adiantamento da data de lançamento comprometeu a parte sonora. Mas isso não apagou o brilho deste jogo!</p>
<p style="TEXT-ALIGN: justify">Para experimentar <strong>Júnior no Espaço</strong>, <strong><a title="Júnior no Espaço" href="http://www.armandoschiavondias.com.br/games/sustain_juniornoespaco.htm" target="_blank">clique aqui</a></strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=354</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Movimentos básicos no Flash via teclado</title>
		<link>http://www.armandoschiavondias.com.br/?p=319</link>
		<comments>http://www.armandoschiavondias.com.br/?p=319#comments</comments>
		<pubDate>Tue, 23 Jun 2009 15:11:58 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Dica]]></category>
		<category><![CDATA[Fácil]]></category>

		<guid isPermaLink="false">http://www.armandoschiavondias.com.br/?p=319</guid>
		<description><![CDATA[<p style="TEXT-ALIGN: justify">Eu recebi diversos e-mails solicitando exemplos mais básicos ( Será que eu peguei pesado com &#8220;Como minimizar um aplicativo em Adobe Air no System Tray&#8220;&#8230;? ) de Flash e AS3. Pois bem, agora vamos falar sobre movimentos básico de um movieclip, detectando o teclado. Abra o Adobe Flash, crie um arquivo novo ( File [...]]]></description>
			<content:encoded><![CDATA[<p style="TEXT-ALIGN: justify">Eu recebi diversos e-mails solicitando exemplos mais básicos ( Será que eu peguei pesado com &#8220;<a title="Como minimizar um aplicativo em Adobe Air no System Tray" href="http://www.armandoschiavondias.com.br/index.php/2009/06/como-minimizar-um-aplicativo-em-adobe-air-no-system-tray/" target="_blank">Como minimizar um aplicativo em Adobe Air no System Tray</a>&#8220;&#8230;? ) de <strong>Flash</strong> e <strong>AS3</strong>. Pois bem, agora vamos falar sobre movimentos básico de um <strong>movieclip</strong>, detectando o teclado. Abra o <strong>Adobe Flash</strong>, crie um arquivo novo ( <strong>File</strong> / <strong>New</strong> / <strong>Flash File ( Action Script 3.0 )</strong> ) e dê um tamanho para ele ( Eu deixei com <strong>400</strong> pixels de largura por <strong>300</strong> pixels de altura ).</p>
<p style="TEXT-ALIGN: justify">Desenhe algo &#8211; <em>um retângulo por exemplo</em> &#8211; e em seguida, selecione-o, e crie um <strong>MovieClip</strong> ( Use a tecla <strong>F8</strong> como atalho ). Dê um nome para o <strong>MovieClip</strong> ( Eu chamei o meu retângulo de <strong>body</strong> ) e deixe seu ponto central ( <strong>Registration</strong> ) no centro do retângulo mesmo.</p>
<div id="attachment_326" class="wp-caption aligncenter" style="width: 411px"><img class="size-full wp-image-326 " title="Movimentos básicos no Flash" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/06/movimentosbasicos_001.gif" alt="Aperte F8 para criar seu MovieClip!" width="401" height="215" /><p class="wp-caption-text">Selecione seu retângulo e aperte F8 para criar seu MovieClip!</p></div>
<p style="TEXT-ALIGN: justify"><span id="more-319"></span>Depois, clique no seu <strong>MovieClip</strong> e em <strong>Properties</strong>, dê um nome para a instância ( Eu decidi chamar a instância de <strong>bodyMovie</strong> ). Lembre-se que <strong>Action Script</strong> é <strong>case sensitive</strong>, então letras maiúsculas são diferentes de minúsculas ( <strong>bodyMovie</strong> é diferente de <strong>bodymovie</strong> assim como é diferente de <strong>BodyMovie</strong> ). Se tiver medo de confundir, deixe todos os nomes de variáveis e objetos em letras minúsculas.</p>
<div id="attachment_321" class="wp-caption aligncenter" style="width: 411px"><img class="size-full wp-image-321" title="Movimentos Básicos no Flash" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/06/movimentosbasicos_002.gif" alt="Dê um nome para a sua instância!" width="401" height="215" /><p class="wp-caption-text">Dê um nome para a sua instância!</p></div>
<p style="TEXT-ALIGN: justify">Agora vamos ao código! Primeiro, vamos criar variáveis para saber se determinadas teclas estão pressionadas ou não. Elas serão do tipo <strong>Boolean</strong>, que aceitam apenas dois valores: <strong>True</strong> ou <strong>False</strong>. Como nosso exemplo fala de movimentos básicos, vou criar quatro variáveis para associá-las às quatro setas de direção do teclado.</p>
<pre class="brush: php;">var pressLeft:Boolean = new Boolean(false);
var pressUp:Boolean = new Boolean(false);
var pressRight:Boolean = new Boolean(false);
var pressDown:Boolean = new Boolean(false);</pre>
<p style="TEXT-ALIGN: justify">Para este exemplo, precisaremos de três funções. Uma será responsável pelo ato de pressionar um botão, outra pelo ato de soltar um botão e finalmente, uma que fará o movimento do <strong>MovieClip</strong>. Vamos primeiro, &#8220;<strong>pressionar o botão</strong>&#8220;!</p>
<pre class="brush: php;">function pressButtonDown(event:KeyboardEvent):void {
switch (event.keyCode) {
  case 37 : //ESQUERDA;
   pressLeft = true;
   break;
  case 38 : //CIMA;
   pressUp = true;
   break;
  case 39 : //DIREITA;
   pressRight = true;
   break;
  case 40 : //BAIXO;
   pressDown = true;
   break;
 }
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, pressButtonDown);</pre>
<p style="TEXT-ALIGN: justify">Vou explicar: Olhe primeiro para a <strong>linha 17</strong> acima ( <strong>stage.addEventListener(KeyboardEvent.KEY_DOWN, pressButtonDown);</strong> ). Nela nós criamos um <strong>Listener</strong> &#8211; <em>que seria um &#8220;responsável&#8221; por uma determinada ação</em> &#8211; que, ao detectar o pressionar de uma tecla qualquer ( <strong>KeyboardEvent.KEY_DOWN</strong> ) ele vai chamar uma função ( <strong>pressButtonDown</strong> ). A função também descrita acima, recebe todos os parâmetros do evento e guarda na variável que chamei de <strong>event</strong>. Em seguida, usando uma estrutura de decisão <strong>switch</strong>, comparamos se o valor de <strong>event.keyCode</strong> é igual à algum código relacionado às <strong>4 setas do teclado</strong>. Ao encontrar <strong>37</strong> ( Esquerda ), <strong>38</strong> ( Cima ), <strong>39</strong> ( Direita ) ou <strong>40 </strong>( Baixo ), nós mudamos o valor da <strong>variável booleana</strong> correspondente para <strong>true</strong>.</p>
<p style="TEXT-ALIGN: justify">Já no momento de soltar a tecla, precisamos detectar novamente qual tecla foi liberada e setar sua variável booleana correspondente como <strong>false</strong>. Observe que o evento muda de <strong>KeyboardEvent.KEY_DOWN</strong> para <strong>KeyboardEvent.KEY_UP</strong>, e a função também muda de nome. O código fica assim:</p>
<pre class="brush: php;">function pressButtonUp(event:KeyboardEvent):void {
 switch (event.keyCode) {
  case 37 : //ESQUERDA;
   pressLeft = false;
   break;
  case 38 : //CIMA;
   pressUp = false;
   break;
  case 39 : //DIREITA;
   pressRight = false;
   break;
  case 40 : //BAIXO;
   pressDown = false;
   break;
 }
}
stage.addEventListener(KeyboardEvent.KEY_UP, pressButtonUp);</pre>
<p style="TEXT-ALIGN: justify">E chegamos finalmente à função que vai realmente fazer nosso <strong>MovieClip</strong> se mexer. Ela será associada à um <strong>Listener</strong> de evento do tipo <strong>Event.ENTER_FRAME</strong>, que é chamada a cada execução do <strong>framerate</strong>. Ou seja, se seu <strong>Flash </strong>estiver com <strong>12 frames por segundo</strong>, esta função será chamada <strong>12 vezes por segundo</strong>. Eu aumentei o <strong>framerate</strong> do meu <strong>Flash </strong>para <strong>40 frames por segundo</strong>, visando uma maior suavidade nos movimentos. Muito cuidado com o que você programa dentro de um <strong>Event.ENTER_FRAME</strong>, pois se exagerar, pode deixar seu processamento lento, ok&#8230;?</p>
<p style="TEXT-ALIGN: justify">E o que a nossa função vai fazer&#8230;? Simples: Ela vai ver se a variável booleana de cada direção está setada como <strong>True</strong>, e se sim, vamos alterar os valores de <strong>x</strong> e <strong>y</strong> do nosso <strong>MovieClip</strong>.</p>
<pre class="brush: php;">function runIt(e:Event):void {
 if (pressLeft) {
   this.bodyMovie.x -= 5;
 }
 if (pressRight) {
   this.bodyMovie.x += 5;
 }
 if (pressUp) {
   this.bodyMovie.y -= 5;
 }
 if (pressDown) {
   this.bodyMovie.y += 5;
 }
}
stage.addEventListener(Event.ENTER_FRAME, runIt);</pre>
<p style="TEXT-ALIGN: justify">Note que no <strong>if</strong>, fazer uma condição com variável boleana dispensa a pergunta, pois ele já contém <strong>True</strong> ou <strong>False</strong>. Então fazer um <strong>(variavelBoleana)</strong> e <strong>(variavelBoleana == true)</strong> é a mesma coisa. Outro detalhe que você deve ter percebido é a forma de somar ou subtrair utilizada acima. Se você quer pegar um número e somar/subtrair com outro número, e guardar o mesmo resultado dentro dele mesmo, então <strong>variável = variável + 5;</strong> é igual à <strong>variável += 5;</strong> ok?</p>
<p style="TEXT-ALIGN: justify">Com apenas isto, nosso <strong>MovieClip </strong>já é capaz de se mover mas&#8230; seria bom adicionar limites à este movimento, para que o seu usuário não tire-o da tela e fique perdido. Basta adicionar alguns <strong>if</strong>&#8217;s à função acima. Lembrando que o <strong>stage</strong> do meu <strong>Flash</strong> tem <strong>400&#215;300</strong>, o resultado é:</p>
<pre class="brush: php;">function runIt(e:Event):void {
 if (pressLeft) {
  if (this.bodyMovie.x &gt; 0) {
   this.bodyMovie.x -= 5;
  }
 }
 if (pressRight) {
  if (this.bodyMovie.x &lt; 400) {
   this.bodyMovie.x += 5;
  }
 }
 if (pressUp) {
  if (this.bodyMovie.y &gt; 0) {
   this.bodyMovie.y -= 5;
  }
 }
 if (pressDown) {
  if (this.bodyMovie.y &lt; 300) {
   this.bodyMovie.y += 5;
  }
 }
}
stage.addEventListener(Event.ENTER_FRAME, runIt);</pre>
<p>Apenas para não se esquecer, o <strong>topo esquerdo superior do Flash</strong> é o ponto <strong>zero</strong>. Se você quer deslizar algo para a direita, você aumenta o <strong>eixo x</strong>. Então, para ir para a esquerda, basta subtrair o <strong>eixo x</strong>. A mesma coisa com o <strong>eixo y</strong>: some números para descer, subtraia números para subir.</p>
<p>Para testar o código em ação, clique uma vez sobre o <strong>Flash </strong>abaixo ( apenas para que o <strong>browser </strong>dê foco ao <strong>Flash</strong>, e que repasse os comandos do teclado para ele ) e em seguida, pressione as setas direcionais do seu teclado e veja o retângulo se mexer!</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.armandoschiavondias.com.br/exemplos/movimentospeloteclado.swf" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://www.armandoschiavondias.com.br/exemplos/movimentospeloteclado.swf"></embed></object></p>
<p>Agora, juntando tudo e organizando um pouco o código, teremos:</p>
<pre class="brush: php;">//==================================================================//
var pressLeft:Boolean = new Boolean(false);
var pressUp:Boolean = new Boolean(false);
var pressRight:Boolean = new Boolean(false);
var pressDown:Boolean = new Boolean(false);
//==================================================================//
function pressButtonDown(event:KeyboardEvent):void {
 switch (event.keyCode) {
  case 37 : //ESQUERDA;
   pressLeft = true;
   break;
  case 38 : //CIMA;
   pressUp = true;
   break;
  case 39 : //DIREITA;
   pressRight = true;
   break;
  case 40 : //BAIXO;
   pressDown = true;
   break;
 }
}
//==================================================================//
function pressButtonUp(event:KeyboardEvent):void {
 switch (event.keyCode) {
  case 37 : //ESQUERDA;
   pressLeft = false;
   break;
  case 38 : //CIMA;
   pressUp = false;
   break;
  case 39 : //DIREITA;
   pressRight = false;
   break;
  case 40 : //BAIXO;
   pressDown = false;
   break;
 }
}
//==================================================================//
function runIt(e:Event):void {
 if (pressLeft) {
  if (this.bodyMovie.x &gt; 0) {
   this.bodyMovie.x -= 5;
  }
 }
 if (pressRight) {
  if (this.bodyMovie.x &lt; 400) {
   this.bodyMovie.x += 5;
  }
 }
 if (pressUp) {
  if (this.bodyMovie.y &gt; 0) {
   this.bodyMovie.y -= 5;
  }
 }
 if (pressDown) {
  if (this.bodyMovie.y &lt; 300) {
   this.bodyMovie.y += 5;
  }
 }
}
//==================================================================//
stage.addEventListener(KeyboardEvent.KEY_DOWN, pressButtonDown);
stage.addEventListener(KeyboardEvent.KEY_UP, pressButtonUp);
stage.addEventListener(Event.ENTER_FRAME, runIt);
//==================================================================//</pre>
<p>E se você quiser estudar e incrementar este código, <strong><a title="Clique e faça o download!" href="http://www.armandoschiavondias.com.br/exemplos/movimentospeloteclado.zip" target="_blank">clique aqui e baixe</a></strong> o código-fonte <strong>zipado</strong>, num <strong>FLA</strong> salvo em <strong>Flash CS3</strong>.</p>
<p>Espero que você tenha apreciado esta <strong>dica básica</strong>. E até o próximo <strong>post</strong>! ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=319</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Danoninho: Cata-Lixo!</title>
		<link>http://www.armandoschiavondias.com.br/?p=304</link>
		<comments>http://www.armandoschiavondias.com.br/?p=304#comments</comments>
		<pubDate>Wed, 17 Jun 2009 02:22:28 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Games em Flash]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Danone]]></category>
		<category><![CDATA[Danoninho]]></category>
		<category><![CDATA[Dino]]></category>
		<category><![CDATA[Flash Games]]></category>

		<guid isPermaLink="false">http://www.armandoschiavondias.com.br/?p=304</guid>
		<description><![CDATA[<p style="text-align: justify;">Desenvolvido na Timepix Interactive em Novembro de 2008, com 3D de Willian Lopes, Design de Daniel Cicarelli e Direção de Marcelo Fragoso, eu tive a oportunidade de programar um jogo educativo que mostra como separar o lixo reciclável para as crianças.</p>
<p class="wp-caption-text">Tela de abertura do jogo!</p>
<p style="text-align: justify;">Com uma dificuldade gradativa, na primeira fase a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Desenvolvido na <strong><a title="Timepix Interactive" href="http://www.timepix.com.br" target="_blank">Timepix Interactive</a></strong> em Novembro de 2008, com 3D de <strong>Willian Lopes</strong>, Design de <strong>Daniel Cicarelli</strong> e Direção de <strong>Marcelo Fragoso</strong>, eu tive a oportunidade de programar um jogo educativo que mostra como separar o lixo reciclável para as crianças.</p>
<div id="attachment_305" class="wp-caption alignleft" style="width: 310px"><img class="size-full wp-image-305" title="Danoninho: Cata-Lixo" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/06/danoninho_catalixo_001.jpg" alt="Tela de abertura do jogo!" width="300" height="200" /><p class="wp-caption-text">Tela de abertura do jogo!</p></div>
<p style="text-align: justify;">Com uma dificuldade gradativa, na primeira fase a missão é separar o lixo <strong>não-reciclável</strong> ( Lata de Lixo Cinza ) dos <strong>papéis</strong> ( Lata Azul ). Depois é inserido no contexto, o <strong>metal</strong> ( Lata Amarela ), o <strong>plástico</strong> ( Lata Vermelha ) e o <strong>vidro</strong> ( Lata Verde ). Jogar um determinado <strong>tipo de lixo</strong> na <strong>lata errada</strong>, perde-se pontos.</p>
<p style="text-align: justify;">Porém o jogo ainda estava muito fácil. Criamos então, a <strong>barra de energia do guindaste</strong>. Mover o guindaste ou segurar algum objeto, gastar energia, que pode ser recuperado ao se coletar <strong>pilhas e baterias</strong>. Isso, adicionado ao fator &#8220;<strong>tempo</strong>&#8220;, criamos um ambiente educativo e desafiador, onde você terá que conquistar o maior placar possível ( Este <strong>placar </strong>é salvo localmente ).</p>
<div id="attachment_306" class="wp-caption alignright" style="width: 310px"><img class="size-full wp-image-306" title="Danoninho: Cata-Lixo" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/06/danoninho_catalixo_002.jpg" alt="É hora de reciclar!" width="300" height="200" /><p class="wp-caption-text">É hora de reciclar!</p></div>
<p style="text-align: justify;">O jogo termina quando a energia do guindaste se esgota por completo ou quando o tempo limite destinado para aquela fase, chega ao fim! Para jogar usa-se as <strong>quatro setas do teclado</strong> para mover o guindaste e com a barra de espaço, você segura o lixo. Mas não exagere nos movimentos, para não ficar sem energia!</p>
<p style="text-align: justify;">Tecnicamente, este game foi desenvolvido em <strong>Flash</strong> usando <strong>AS 3.0 </strong>e compilado para o <strong>Flash Player 9</strong>. Todo o <strong>3D </strong>utilizado neste jogo, é <strong>pré-renderizado</strong>.</p>
<p style="text-align: justify;">Quer experimentar&#8230;? <strong><a title="Danoninho: Cata-Lixo!" href="/games/danoninho_catalixo.htm" target="_blank">Clique aqui para jogar</a></strong> e aprenda a reciclar com o <strong>Dino Danoninho</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=304</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Olhar Digital fala sobre criação de jogos em Flash &#8211; E eu sou entrevistado!</title>
		<link>http://www.armandoschiavondias.com.br/?p=299</link>
		<comments>http://www.armandoschiavondias.com.br/?p=299#comments</comments>
		<pubDate>Tue, 16 Jun 2009 20:21:16 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Armando]]></category>
		<category><![CDATA[Apresentação]]></category>
		<category><![CDATA[TV]]></category>

		<guid isPermaLink="false">http://www.armandoschiavondias.com.br/?p=299</guid>
		<description><![CDATA[<p style="text-align: justify;">No dia 16 de Março de 2008, foi ao ar um quadro sobre desenvolvimento de jogos em Flash, no programa Olhar Digital, onde eu fui entrevistado. Olhar Digital, como você já deve deduzir, leva aos seus telespectadores novidades e matérias sobre o mundo da tecnologia e internet. Esta matéria tem como objetivo demonstrar que [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">No dia 16 de Março de 2008, foi ao ar um quadro sobre desenvolvimento de <strong>jogos em Flash</strong>, no programa <strong>Olhar Digital</strong>, onde <strong>eu</strong> fui entrevistado. <strong>Olhar Digital</strong>, como você já deve deduzir, leva aos seus telespectadores novidades e matérias sobre o mundo da tecnologia e internet. Esta matéria tem como objetivo demonstrar que é possível trabalhar com desenvolvimento de jogos, mesmo no difícil mercado brasileiro.</p>
<p style="text-align: justify;"><strong>Jogos em Flash</strong> são famosos para jogadores casuais: Basta acessar um link e sair jogando em poucos minutos. Mas não vamos limitar nossos pensamentos desta forma! A <strong>Ankama Games </strong>construiu seu <strong>MMORPG Dofus </strong>( <a title="Site oficial do Dofus" href="http://www.dofus.com/" target="_blank"><strong>www.dofus.com</strong></a> ) utilizando <strong>Flash</strong>. Tudo depende do tempo disponível para desenvolvimento e do público alvo!</p>
<p style="text-align: justify;">Curioso&#8230;? Assista agora mesmo:</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/qVSEkJwyUIg&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hl=en&amp;feature=player_embedded&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/qVSEkJwyUIg&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hl=en&amp;feature=player_embedded&amp;fs=1" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p style="text-align: justify;">O <strong>Olhar Digital </strong>passa na <strong>RedeTV </strong>aos domingos, às <strong>15:30</strong>, para a grande SP. Mas é possível também, assistir pela internet, através do site oficial do programa: <a title="Site oficial do Olhar Digital" href="http://www.olhardigital.com.br/" target="_blank"><strong>http://www.olhardigital.com.br</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=299</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como fazer um GetURL(); em AS3</title>
		<link>http://www.armandoschiavondias.com.br/?p=145</link>
		<comments>http://www.armandoschiavondias.com.br/?p=145#comments</comments>
		<pubDate>Tue, 16 Jun 2009 17:08:16 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Action Script 3]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[AS2]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Dica]]></category>
		<category><![CDATA[Fácil]]></category>

		<guid isPermaLink="false">http://www.armandoschiavondias.com.br/?p=145</guid>
		<description><![CDATA[<p style="text-align: justify;">Esta dica é bem fácil, mas ela ainda atinge muitas pessoas que estão saindo do AS2 para o AS3. Quando se monta um Flash para algum site, chega um momento que você deve acionar um link para o browser ir para outra página. Em Action Script 2 era simples:</p>
getURL(&#34;http://www.armandoschiavondias.com.br&#34;, &#34;_blank&#34;);
<p style="text-align: justify;">Em AS3, o [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Esta dica é bem fácil, mas ela ainda atinge muitas pessoas que estão saindo do <strong>AS2</strong> para o <strong>AS3</strong>. Quando se monta um <strong>Flash</strong> para algum site, chega um momento que você deve acionar um <strong>link</strong> para o <strong>browser </strong>ir para outra página. Em <strong>Action Script 2 </strong>era simples:</p>
<pre class="brush: php;">getURL(&quot;http://www.armandoschiavondias.com.br&quot;, &quot;_blank&quot;);</pre>
<p style="text-align: justify;">Em <strong>AS3</strong>, o substituto do <strong>getURL</strong> fica assim:</p>
<p><span id="more-145"></span></p>
<pre class="brush: php;">var myURL:String = new String(&quot;http://www.armandoschiavondias.com.br&quot;);
var myRequest:URLRequest = new URLRequest(URL);
navigateToURL(myRequest, &quot;_blank&quot;);</pre>
<p style="text-align: justify;">Então, primeiro você deve criar uma string para colocar a sua <strong>URL </strong>dentro. Em seguida, crie um objeto <strong>URLRequest</strong>, e associe a sua string à ele. Depois chame o comando <strong>navigateToURL</strong> e seja feliz!</p>
<p style="text-align: justify;">Porém, podemos incrementá-lo com o auxílio do bloco <strong>try</strong>. Com ele, podemos fazer alguma coisa, caso a <strong>URL</strong> solicitada dê algum tipo de erro. Então, o código ficaria assim:</p>
<pre class="brush: php;">var myURL:String = new String(&quot;http://www.armandoschiavondias.com.br&quot;);
var myRequest:URLRequest = new URLRequest(myURL);
try {
navigateToURL(myRequest, &quot;_blank&quot;);
} catch (e:Error) {
trace(&quot;Ops! URL não existe ou está fora do ar!&quot;);
}</pre>
<p style="text-align: justify;">No exemplo acima, estou apenas usando um <strong>trace</strong>, mas você pode fazer outra coisa aí, como mudar a cor do botão do seu <strong>Flash</strong> ou o que a sua imaginação puder criar! Se preferir, baixe um <strong>FLA</strong> em <strong>Flash CS3 </strong>/ <strong>AS3</strong>, <strong><a title="Exemplo de getURL em AS3 ( Zip )" href="/exemplos/geturl_em_as3.zip" target="_blank">clicando aqui</a></strong>! Abra este <strong>FLA</strong>, dê um <strong>Control + Enter</strong> e teste à vontade!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=145</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como minimizar um aplicativo em Adobe Air no &quot;System Tray&quot;</title>
		<link>http://www.armandoschiavondias.com.br/?p=105</link>
		<comments>http://www.armandoschiavondias.com.br/?p=105#comments</comments>
		<pubDate>Tue, 16 Jun 2009 16:30:07 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[AS3]]></category>

		<guid isPermaLink="false">http://www.armandoschiavondias.com.br/?p=105</guid>
		<description><![CDATA[<p style="text-align: justify;">Uma das primeiras coisas que eu fiz no meu primeiro aplicativo desenvolvido em Adobe Air, foi estudar uma maneira de minimizá-lo no System Tray, ou se preferir, como um pequeno ícone ao lado do relógio do Windows. É um ótimo recurso, principalmente quando você quer criar uma aplicativo de uso prolongado, como um [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Uma das primeiras coisas que eu fiz no meu primeiro aplicativo desenvolvido em <strong>Adobe Air</strong>, foi estudar uma maneira de minimizá-lo no <strong>System Tray, </strong>ou se preferir, como um pequeno ícone ao lado do relógio do <strong>Windows</strong>. É um ótimo recurso, principalmente quando você quer criar uma aplicativo de uso prolongado, como um <strong>Instant Messenger</strong>.</p>
<p style="text-align: justify;">E então&#8230;? Vamos colocar a mão <span style="text-decoration: line-through;">na massa</span> no código&#8230;?</p>
<p style="text-align: justify;"><span id="more-105"></span></p>
<p style="text-align: justify;">Você já deve ter o <strong>Adobe Flex</strong> instalado em seu computador &#8211; <em>Caso não, baixe a versão <strong>Trial</strong> do site da <strong>Adobe</strong>, através deste <strong><a title="Adobe Flex" href="http://www.adobe.com/products/flex/" target="_blank">link</a></strong></em>. Agora vá no menu <strong>File</strong>, opção <strong>New</strong> e escolha <strong>Flex Project</strong>.</p>
<div id="attachment_134" class="wp-caption aligncenter" style="width: 369px"><img class="size-full wp-image-134" title="Adobe Air e Systray" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/05/systray_flex_air_001.jpg" alt="Não esqueça de dizer que é em Adobe Air!" width="359" height="294" /><p class="wp-caption-text">Não esqueça de dizer que é em Adobe Air!</p></div>
<p style="text-align: justify;">Dê um nome para o seu <strong>projeto</strong> (<strong><em>Project Name</em></strong>), escolha a pasta onde você quer salvá-lo (<strong>Project Location</strong>) e escolha a opção <strong>Desktop Application</strong>, já que estamos em uma dica de <strong>Adobe Air</strong>. Em seguida eu reduzi a área para <strong>200&#215;300</strong> &#8211; <em>apenas porque eu quis assim</em> &#8211; e coloquei um <strong>label </strong>para o aplicativo não ficar vazio. Cliquei no botão de <strong>Debug</strong> e o resultado você confere na imagem à seguir&#8230;</p>
<div id="attachment_135" class="wp-caption aligncenter" style="width: 218px"><img class="size-full wp-image-135" title="Adobe Air e Systray" src="http://www.armandoschiavondias.com.br/wp-content/uploads/2009/05/systray_flex_air_002.gif" alt="Legal, mas pode ficar melhor..." width="208" height="334" /><p class="wp-caption-text">Legal, mas pode ficar melhor...</p></div>
<p style="text-align: justify;">Em seguida, eu decidi abrir o arquivo <strong>SystrayExample-app.xml</strong> ( <em><strong>Atenção:</strong> É o nome deste arquivo de configuração é o o nome do projeto + &#8220;<strong>-app.xml</strong>&#8220;</em> ) procurei pela <strong>linha 46</strong>, onde se fala do <strong>system chrome</strong>. Ela vem previamente comentada e devido à isso, seu valor padrão é <strong>standard</strong>. Vamos descomentá-la e aplicar o valor <strong>none</strong>, da seguinte maneira:</p>
<p><strong>&lt;systemChrome&gt;none&lt;/systemChrome&gt;</strong></p>
<p>Depois dessa mudança, salve o seu projeto e rode novamente. Teremos então:</p>
<div id="attachment_165" class="wp-caption aligncenter" style="width: 210px"><img class="size-full wp-image-165 " title="Adobe Air e System Tray" src="http://www.armandoschiavondias.com.br/wp-content/uploads/2009/05/systray_flex_air_003.jpg" alt="A opção Chrome dá um visual mais personalizado" width="200" height="300" /><p class="wp-caption-text">A opção Chrome </p></div>
<p style="text-align: justify;">O que foi&#8230;? Você gostaria de personalizar totalmente o visual da sua janela&#8230;? É possível, mas deixaremos isso para uma outra oportunidade. Agora, experimente mover a sua janela, minimizá-la, restaurá-la, redimensioná-la. Veja que ela reage como a janela de um aplicativo comum. Feche-a, e veja o código do seu aplicativo, que deve ser mais ou menos assim:</p>
<pre class="brush: php;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; width=&quot;200&quot; height=&quot;300&quot;&gt;
&lt;mx:Label y=&quot;10&quot; text=&quot;Exemplo de aplicação AIR&quot; fontWeight=&quot;bold&quot; horizontalCenter=&quot;0&quot;/&gt;
&lt;/mx:WindowedApplication&gt;</pre>
<p style="text-align: justify;">Agora vamos começar a programar de verdade. Primeiro, adicione um <strong>applicationComplete</strong> no <strong>mx:WindowedApplication</strong>. Ela serve para chamar a primeira função que o seu aplicativo deverá chamar, assim que ele estiver completo em memória. Eu decidi chamar essa função de <strong>AutoExec()</strong> em homenagem ao <strong>autoexec.bat</strong> da época do <strong>DOS</strong>. Em seguida, crie um bloco <strong>&lt;mx:Script&gt;&lt;/mx:Script&gt;</strong> como o exemplo abaixo:</p>
<pre class="brush: php;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; width=&quot;200&quot; height=&quot;300&quot; applicationComplete=&quot;autoExec()&quot;&gt;
&lt;mx:Script&gt;
&lt;![CDATA[
// Vamos inserir código AS3 aqui!
]]&gt;
&lt;/mx:Script&gt;
&lt;mx:Label y=&quot;10&quot; text=&quot;Exemplo de aplicação AIR&quot; fontWeight=&quot;bold&quot; horizontalCenter=&quot;0&quot;/&gt;
&lt;/mx:WindowedApplication&gt;
</pre>
<p style="text-align: justify;">Agora, entre o <strong>&lt;![CDATA[</strong> e o <strong>]]&gt;</strong>, vamos inserir diversas funções. Para não ficar confuso, vou explicar aos poucos e depois, juntar tudo! Primeiro, vamos importar classes necessárias e declarar variáveis!</p>
<pre class="brush: php;">import mx.core.BitmapAsset;
private var dockImage:BitmapAsset;
private var win:NativeWindow;
[Embed(source=&quot;systray_icon.png&quot;)][Bindable] public var mySysTray:Class;</pre>
<p style="text-align: justify;">Primeiro nós importamos a classe <strong>BitmapAsset</strong>, para em seguida declarar uma variável &#8211; <strong>dockImage</strong> &#8211; usando o tipo importado. Depois criei uma variável <strong>win</strong> para servir apenas de atalho para se referir à janela principal do aplicativo. Para finalizar, incorporei o ícone <strong>systray_icon.jpg</strong> ao <strong>SWF</strong>, já jogando ele na declaração do <strong>mySystray</strong>. Lembre-se, é um aplicativo <strong>AIR</strong>, então não dá pra confiar se uma determinada imagem vai estar no mesmo diretório da aplicação. É melhor deixá-la dentro do <strong>SWF</strong> ou acessá-la, remotamente.</p>
<pre class="brush: php;">private function autoExec():void {
win = stage.nativeWindow;
dockImage = new mySysTray() as BitmapAsset;
if (NativeApplication.supportsSystemTrayIcon){
SystemTrayIcon(NativeApplication.nativeApplication.icon).tooltip = &quot;Nome do meu aplicativo!&quot;;
SystemTrayIcon(NativeApplication.nativeApplication.icon).addEventListener(MouseEvent.CLICK, undock);
SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = createSystrayRootMenu();
win.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING,interceptMinimize);
}
}</pre>
<p style="text-align: justify;">Como mencionei antes, a função <strong>autoExec()</strong> está sendo chamada no <strong>applicationComplete</strong>, então ela é quem dará início à tudo. Primeiro, eu setei o meu &#8220;atalho-variável&#8221; <strong>win </strong>para a janela nativa da aplicação. Depois preparamos o <strong>dockImage</strong> e verificamos se o ambiente onde nossa aplicação está rodando suporta <strong>Systray</strong>. Se sim, ótimo: Vamos preparar o <strong>SystemTrayIcon</strong>. Em <strong>tooltip</strong>, podemos escrever o nome do nosso aplicativo. O <strong>addEventListener</strong> detecta o <strong>click </strong>do mouse para restaurar a janela, através da função <strong>undock </strong>que será discutida adiante. Depois associamos um menu ao botão direito ( <strong>createSystrayRootMenu</strong> ) e finalmente, iremos fazer um <strong>addEventListener</strong> para interceptar o ato tradicional de minimizar a janela.</p>
<pre class="brush: php;">private function interceptMinimize(e:NativeWindowDisplayStateEvent):void {
if (e.afterDisplayState == &quot;minimized&quot;) {
e.preventDefault();
win.visible = false;
NativeApplication.nativeApplication.icon.bitmaps = [dockImage];
}
}</pre>
<p style="text-align: justify;">A função <strong>interceptMinimize</strong> roda toda vez que há mudança no status da janela. Então, no <strong>if</strong> nós iremos verificar se ele está tentando ser minimizado. Se sim, nós iremos <strong>CANCELAR </strong>através da função <strong>preventDefault()</strong>. Em seguida, iremos tornar a janela invisível e ativar o ícone na bandeja do relógio. Simples até aqui, não&#8230;?</p>
<pre class="brush: php;">private function undock(e:Event):void {
win.visible = true;
win.orderToFront();
NativeApplication.nativeApplication.icon.bitmaps = [];
}</pre>
<p style="text-align: justify;">Para realizar o <strong>undock</strong> e restaurar a janela, também é simples. Primeiro deixamos ela visível e por segurança, trazemos ela pra frente com a função <strong>orderToFront()</strong>. Em seguida, tire o ícone do <strong>Systray</strong>. Pronto! Com apenas isto você já consegue minimizar seu aplicativo <strong>Air </strong>no <strong>Systray</strong>. Agora vamos à um <strong>bônus</strong>: Colocando um menu no botão direito do mouse, quando o aplicativo estiver minimizado do lado do relógio:</p>
<pre class="brush: php;">private function createSystrayRootMenu():NativeMenu{
var menu:NativeMenu = new NativeMenu();
var openNativeMenuItem:NativeMenuItem = new NativeMenuItem(&quot;Mostrar o Aplicativo!&quot;);
var siteNativeMenuItem:NativeMenuItem = new NativeMenuItem(&quot;Acessar o meu Blog!&quot;);
var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem(&quot;Fechar o Aplicativo...&quot;);
openNativeMenuItem.addEventListener(Event.SELECT, undock);
siteNativeMenuItem.addEventListener(Event.SELECT, openSite);
exitNativeMenuItem.addEventListener(Event.SELECT, closeWindowByEvent);
menu.addItem(openNativeMenuItem);
menu.addItem(siteNativeMenuItem);
menu.addItem(new NativeMenuItem(&quot;&quot;,true));
menu.addItem(exitNativeMenuItem);
return menu;
}</pre>
<p style="text-align: justify;">A função <strong>createSystrayRootMenu</strong> cria o menu inteiro. Neste exemplo, vamos criar um menu com três itens! O primeiro vai ser uma opção extra para restaurar o aplicativo minimizado. Veja que basta associar a função <strong>undock</strong> já desenvolvida à esta opção. O segundo item, chama uma função <strong>openSite</strong>, que irá abrir o browser padrão que irá carregar um link específico. A última opção, é para fechar o aplicativo sem ter a necessidade de maximizá-lo antes. Bom, como a <strong>undock</strong> já foi explicada, veja como ficou a função <strong>openSite</strong>:</p>
<pre class="brush: php;">private function openSite(e:Event):void {
var url:String = new String(&quot;http://www.armandoschiavondias.com.br/&quot;);
var urlReq:URLRequest = new URLRequest(url);
navigateToURL(urlReq);
}</pre>
<p style="text-align: justify;">Como você viu acima, é bem simples. Basta criar uma <strong>string</strong> com a <strong>URL </strong>do site, depois criar um <strong>URLRequest</strong> para finalmente chamar o <strong>navigateToURL</strong>. Agora vamos ver a última função do nosso exemplo:</p>
<pre class="brush: php;">private function closeWindowByEvent(e:Event):void {
var closing:Event = new Event(Event.CLOSING,true,true);
dispatchEvent(closing);
if(!closing.isDefaultPrevented()){
win.close();
}
}</pre>
<p style="text-align: justify;">Nesta função, nós simulamos a ação &#8220;<strong>tradicional</strong>&#8221; de fechar a janela, nativa do <strong>Flex</strong>. Ou seja, nós criamos um evento que na verdade não aconteceu &#8211; e guarda este evento fictício na variável <strong>closing</strong> &#8211; envia ele para o sistema ( através do <strong>dispatchEvent </strong>) e se ela não for cancelada, finalmente <strong>fechamos a aplicação</strong>!</p>
<p style="text-align: justify;">O código inteiro fica assim:</p>
<pre class="brush: php;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; layout=&quot;absolute&quot; width=&quot;200&quot; height=&quot;300&quot; applicationComplete=&quot;autoExec()&quot;&gt;
&lt;mx:Script&gt;
&lt;![CDATA[
import mx.core.BitmapAsset;
private var dockImage:BitmapAsset;
private var win:NativeWindow;
[Embed(source=&quot;systray_icon.png&quot;)][Bindable] public var mySysTray:Class;

private function autoExec():void {
win = stage.nativeWindow;
dockImage = new mySysTray() as BitmapAsset;
if (NativeApplication.supportsSystemTrayIcon){
SystemTrayIcon(NativeApplication.nativeApplication.icon).tooltip = &quot;Nome do meu aplicativo!&quot;;
SystemTrayIcon(NativeApplication.nativeApplication.icon).addEventListener(MouseEvent.CLICK, undock);
SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = createSystrayRootMenu();
win.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING,interceptMinimize);
}
}

private function interceptMinimize(e:NativeWindowDisplayStateEvent):void {
if (e.afterDisplayState == &quot;minimized&quot;) {
e.preventDefault();
win.visible = false;
NativeApplication.nativeApplication.icon.bitmaps = [dockImage];
}
}
private function undock(e:Event):void {
win.visible = true;
win.orderToFront();
NativeApplication.nativeApplication.icon.bitmaps = [];
}

private function createSystrayRootMenu():NativeMenu{
var menu:NativeMenu = new NativeMenu();
var openNativeMenuItem:NativeMenuItem = new NativeMenuItem(&quot;Mostrar o Aplicativo!&quot;);
var siteNativeMenuItem:NativeMenuItem = new NativeMenuItem(&quot;Acessar o meu Blog!&quot;);
var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem(&quot;Fechar o Aplicativo...&quot;);
openNativeMenuItem.addEventListener(Event.SELECT, undock);
siteNativeMenuItem.addEventListener(Event.SELECT, openSite);
exitNativeMenuItem.addEventListener(Event.SELECT, closeWindowByEvent);
menu.addItem(openNativeMenuItem);
menu.addItem(siteNativeMenuItem);
menu.addItem(new NativeMenuItem(&quot;&quot;,true));
menu.addItem(exitNativeMenuItem);
return menu;
}

private function openSite(e:Event):void {
var url:String = new String(&quot;http://www.armandoschiavondias.com.br/&quot;);
var urlReq:URLRequest = new URLRequest(url);
navigateToURL(urlReq);
}

private function closeWindowByEvent(e:Event):void {
var closing:Event = new Event(Event.CLOSING,true,true);
dispatchEvent(closing);
if(!closing.isDefaultPrevented()){
win.close();
}
}

]]&gt;
&lt;/mx:Script&gt;
&lt;mx:Label y=&quot;10&quot; text=&quot;Exemplo de aplicação AIR&quot; fontWeight=&quot;bold&quot; horizontalCenter=&quot;0&quot;/&gt;
&lt;/mx:WindowedApplication&gt;</pre>
<p style="text-align: justify;"><strong>Atualização (26/06/2009): </strong>Graças à observação do <strong>Lucas Monteverde</strong>, a função <strong>undock</strong> que era declarada como <strong>private function undock(m:MouseEvent):void {</strong> passou a ser declada como <strong>private function undock(e:Event):void {</strong>, pois deixando o parâmetro &#8220;mais genérico&#8221; conseguimos acioná-la tanto pelo <strong>click do mouse</strong> quanto pela <strong>opção do menu</strong> do botão direito do mouse, sem problemas! Atualizei o <strong>código </strong>e o exemplo em <strong>Zip</strong>!</p>
<p>E se você preferir, faça o <strong><a title="Clique aqui e faça o download deste exemplo!" href="http://www.armandoschiavondias.com.br/exemplos/SystrayExample.zip" target="_blank">download de um zip</a></strong>, contendo este exemplo inteiro, prontinho para você estudar e aprender!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=105</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Eu no Campus Party Brasil 2009</title>
		<link>http://www.armandoschiavondias.com.br/?p=54</link>
		<comments>http://www.armandoschiavondias.com.br/?p=54#comments</comments>
		<pubDate>Sun, 31 May 2009 14:55:22 +0000</pubDate>
		<dc:creator>Armando</dc:creator>
				<category><![CDATA[Campus Party]]></category>
		<category><![CDATA[Palestra]]></category>

		<guid isPermaLink="false">http://www.jmaximus.com.br/?p=54</guid>
		<description><![CDATA[<p class="wp-caption-text">Armando em mais uma nova palestra</p>
<p style="text-align: justify;">O Campus Party Brasil 2009 aconteceu entre os dias 19 e 25 de janeiro, no Centro de Exposições Imigrantes em São Paulo e reuniu 6.655 campuseiros, além dos 118.662 visitantes da Área Expo &#38; Lazer.</p>
<p style="text-align: justify;">E lá estava eu, em mais duas palestras: A primeira sobre desenvolvimento [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_86" class="wp-caption alignright" style="width: 310px"><img class="size-full wp-image-86" title="Campus Party Brasil 2009" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/05/campusparty2009_1.jpg" alt="Armando em mais uma nova palestra" width="300" height="220" /><p class="wp-caption-text">Armando em mais uma nova palestra</p></div>
<p style="text-align: justify;">O <strong>Campus Party Brasil 2009</strong> aconteceu entre os dias 19 e 25 de janeiro, no <strong>Centro de Exposições Imigrantes</strong> em São Paulo e reuniu <strong>6.655 campuseiros</strong>, além dos <strong>118.662 visitantes</strong> da Área Expo &amp; Lazer.</p>
<p style="text-align: justify;">E lá estava eu, em mais duas palestras: A primeira sobre <strong>desenvolvimento de games em Flash</strong> (<em> <strong>Action Script 3</strong>, dicas sobre as classes <strong><a title="Site oficial da classe Tweener (Caurina)" href="http://code.google.com/p/tweener/" target="_blank">Tweener</a></strong> e </em><a title="Site oficial da classe Papervision 3D" href="http://www.papervision3d.org/" target="_blank"><strong><em>Papervision</em></strong></a><em> </em>) e a segunda, sobre o crescimento do <a title="Portal RPG Online" href="http://www.rpgonline.com.br" target="_blank"><strong>Portal RPG Online</strong></a> (<em> Otimização do site para facilitar a indexação pelo <strong>Google </strong>e a importância da <strong>relevância</strong> para o seu público </em>).</p>
<p style="text-align: justify;">Neste ano eu mostrei os conceitos básicos de animação via <strong>Action Script 3.0</strong>, começando com um simples retângulo se movendo de acordo com as setas do teclado, evoluindo para um &#8220;personagem&#8221; capaz de correr simulando <strong>aceleração</strong> e <strong>desaceleração</strong>, além de ser capaz de saltar. Depois, combinamos isso à classe de animação  <strong><a title="Site oficial da classe Tweener (Caurina)" href="http://code.google.com/p/tweener/" target="_blank">Tweener</a></strong>.</p>
<div id="attachment_87" class="wp-caption alignleft" style="width: 310px"><img class="size-full wp-image-87" title="Campus Party Brasil 2009" src="http://armandosch.dominiotemporario.com/wp-content/uploads/2009/05/campusparty2009_2.jpg" alt="O público prestando atenção!" width="300" height="220" /><p class="wp-caption-text">O público prestando atenção!</p></div>
<p style="text-align: justify;">Para 2010, pretendo desenvolver um projeto mais concreto em palco, como a criação de um pequeno <strong>game de aventura</strong>, do começo ao fim. Os interessados poderão acompanhar apenas assistindo, estudando ou até mesmo melhorando o código desenvolvido entre uma palestra e outra &#8211; <em>o <strong>código-fonte</strong> será disponibilizado ao final de cada palestra</em>. Para isso, já estou solicitando mais tempo para os organizadores da <strong>Área de Desenvolvimento</strong>.</p>
<p style="text-align: justify;">Além disso, pretendo falar de <strong>Adober Air</strong>, <strong>Adobe Flex</strong> e <strong>Flash Media Interactive Server</strong>, que em sua essência, complementam o <strong>Flash </strong>de diferentes formas, com diferentes objetivos.</p>
<p style="text-align: right;">E que venha o <strong>Campus Party Brasil 2010</strong>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandoschiavondias.com.br/?feed=rss2&amp;p=54</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
