  <?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>Athanazio &#187; javafx</title>
	<atom:link href="http://www.athanazio.com/tag/javafx/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.athanazio.com</link>
	<description>Nada é Simples, Mas Tudo é Possível</description>
	<lastBuildDate>Thu, 01 Dec 2011 03:47:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>sbgames 2009, fast track, Javafx evaluation</title>
		<link>http://www.athanazio.com/2009/10/11/sbgames-2009-fast-track-javafx-evaluation/</link>
		<comments>http://www.athanazio.com/2009/10/11/sbgames-2009-fast-track-javafx-evaluation/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 23:47:45 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[60 seconds]]></category>
		<category><![CDATA[evaluation]]></category>
		<category><![CDATA[fast track]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[sbgames 2009]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2231</guid>
		<description><![CDATA[sbgames 2009 &#8211; fast track &#8211; JavaFX evaluation from Hamilton Lima on Vimeo.]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7015826&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7015826&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/7015826">sbgames 2009 &#8211; fast track &#8211; JavaFX evaluation</a> from <a href="http://vimeo.com/athanazio">Hamilton Lima</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/10/11/sbgames-2009-fast-track-javafx-evaluation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javafx para criar jogos 3/3</title>
		<link>http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-33/</link>
		<comments>http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-33/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 01:06:28 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[trecos]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[jogos]]></category>
		<category><![CDATA[riojug]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1806</guid>
		<description><![CDATA[Segue a parte 3/3 do video da apresentacao no Riojug em abril de 2009 sobre a criacao de jogos usando JavaFX JavaFX para criação de Jogos 3/3 from Hamilton Lima on Vimeo.]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Segue a parte 3/3 do video da apresentacao no Riojug<br />
em abril de 2009 sobre a criacao de jogos usando JavaFX</p>
<p><object width="400" height="300" data="http://vimeo.com/moogaloop.swf?clip_id=4174150&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=4174150&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /></object><br />
<a href="http://vimeo.com/4174150">JavaFX para criação de Jogos 3/3</a> from <a href="http://vimeo.com/user1246985">Hamilton Lima</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-33/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>javafx para criar jogos 2/3</title>
		<link>http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-23/</link>
		<comments>http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-23/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 00:26:49 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[trecos]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[jogos]]></category>
		<category><![CDATA[riojug]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1804</guid>
		<description><![CDATA[Segue a parte 2/3 do video da apresentacao no Riojug em abril de 2009 sobre a criacao de jogos usando JavaFX JavaFX para criação de Jogos 2/3 from Hamilton Lima on Vimeo.]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Segue a parte 2/3 do video da apresentacao no Riojug<br />
em abril de 2009 sobre a criacao de jogos usando JavaFX</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4173633&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4173633&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://vimeo.com/4173633">JavaFX para criação de Jogos 2/3</a> from <a href="http://vimeo.com/user1246985">Hamilton Lima</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-23/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>javafx para criar jogos 1/3</title>
		<link>http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-13/</link>
		<comments>http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-13/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 00:24:30 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[trecos]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[jogos]]></category>
		<category><![CDATA[riojug]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1802</guid>
		<description><![CDATA[Segue a parte 1/3 do video da apresentacao no Riojug em abril de 2009 sobre a criacao de jogos usando JavaFX JavaFX para criação de Jogos 1/3 from Hamilton Lima on Vimeo.]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Segue a parte 1/3 do video da apresentacao no Riojug<br />
em abril de 2009 sobre a criacao de jogos usando JavaFX</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4163762&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4163762&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><br /><a href="http://vimeo.com/4163762">JavaFX para criação de Jogos 1/3</a> from <a href="http://vimeo.com/user1246985">Hamilton Lima</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/04/15/javafx-para-criar-jogos-13/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>javafx eh maneiro mas vacila</title>
		<link>http://www.athanazio.com/2009/03/20/javafx-eh-maneiro-mas-vacila/</link>
		<comments>http://www.athanazio.com/2009/03/20/javafx-eh-maneiro-mas-vacila/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 18:39:33 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[trecos]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[vacilo]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1766</guid>
		<description><![CDATA[muito bonito hein seu JavaFx &#8230; para fazer o deploy TEM q baixar o JavaFx Runtim do site &#8230; TEM QUE, e ainda por cima para rodar o usuário tem que saber que o arquivo JNLP eh para baixar e nao para abrir &#8230; muito maneiraa a linguagem mas deram mole feio no fimzim &#8230; [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>muito bonito hein seu JavaFx &#8230; para fazer o deploy TEM q baixar o JavaFx Runtim do site &#8230; TEM QUE, e ainda por cima para rodar o usuário tem que saber que o arquivo JNLP eh para baixar e nao para abrir &#8230; muito maneiraa a linguagem mas deram mole feio no fimzim &#8230;</p>
<p>eh capaz dos meus rumos irem para as aguas do <a href="http://www.pygame.org/news.html">pygame</a>, tudo indica &#8230;</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/20/javafx-eh-maneiro-mas-vacila/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javafx os cabecudinhos preview 2009-03-18</title>
		<link>http://www.athanazio.com/2009/03/19/javafx-os-cabecudinhos-preview-2009-03-18/</link>
		<comments>http://www.athanazio.com/2009/03/19/javafx-os-cabecudinhos-preview-2009-03-18/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 05:07:30 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[cabecudnhos]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[vacavitoria]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1763</guid>
		<description><![CDATA[Temos grandes novidades neste preview: Uma interface para entrar com nome dos usuarios que estão jogando a tela de como jogar o envio da pontuação para o servidor Ufa &#8230; os novos graficos ainda nao estao lah, mas estao no forno !! este eh o link para os arquivos do preview http://svn.vacavitoria.com/cabecudinhos_1/cabecudinhos_1/preview/2009-03-18/ e este eh [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/03/mosquito-killers.jpg"><img class="alignnone size-medium wp-image-1764" title="mosquito-killers" src="http://www.athanazio.com/wp-content/uploads/2009/03/mosquito-killers-398x300.jpg" alt="mosquito-killers" width="398" height="300" /></a></p>
<p>Temos grandes novidades neste preview:</p>
<ul>
<li>Uma interface para entrar com nome dos usuarios que estão jogando</li>
<li>a tela de como jogar</li>
<li>o envio da pontuação para o servidor</li>
</ul>
<p>Ufa &#8230; os novos graficos ainda nao estao lah, mas estao no forno !!</p>
<p>este eh o link para os arquivos do preview<br />
<a href="http://svn.vacavitoria.com/cabecudinhos_1/cabecudinhos_1/preview/2009-03-18/">http://svn.vacavitoria.com/cabecudinhos_1/cabecudinhos_1/preview/2009-03-18/</a></p>
<p>e este eh o video<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/x8EGhrC43IM&#038;hl=pt&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/x8EGhrC43IM&#038;hl=pt&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/19/javafx-os-cabecudinhos-preview-2009-03-18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javafx cabecudinhos preview 2009-03-15</title>
		<link>http://www.athanazio.com/2009/03/16/javafx-cabecudinhos-preview-2009-03-15/</link>
		<comments>http://www.athanazio.com/2009/03/16/javafx-cabecudinhos-preview-2009-03-15/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 01:10:45 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[cabeçudinhos]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[sample]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1759</guid>
		<description><![CDATA[Olas ! estamos quase terminando o jogo dos cabecudinhos, episodio I o ataque dos mosquitos ! as partes graficas estao saindo do forno, valeu Mariana !! as coisas estao se encaixando, e em breve vai rolar o envio de pontuacao para o servidor. Coisas novas bem legais estao neste preview : feedback do tempo para [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/03/cabecudinhos-preview-2009-03-15.png"><img src="http://www.athanazio.com/wp-content/uploads/2009/03/cabecudinhos-preview-2009-03-15-417x300.png" alt="cabecudinhos-preview-2009-03-15" title="cabecudinhos-preview-2009-03-15" width="417" height="300" class="alignnone size-medium wp-image-1760" /></a><br />
Olas ! estamos quase terminando o jogo dos cabecudinhos, episodio I o ataque dos mosquitos ! as partes graficas estao saindo do forno, valeu Mariana !! as coisas estao se encaixando, e em breve vai rolar o envio de pontuacao para o servidor.</p>
<p>Coisas novas bem legais estao neste preview : </p>
<ul>
<li>feedback do tempo para a criacao do novo mosquito e tempo que o item vai ficar sem gerar mosquito</li>
<li>efeito quando os personagens sao atingidos pelo mosquito</li>
<li>contagem dos pontos</li>
</ul>
<p>baixe o arquivo de webstart da implementacao atual<br />
<a href="http://svn.vacavitoria.com/cabecudinhos_1/cabecudinhos_1/preview/2009-03-15/cabecudinhos_episodio_um.jnlp">cabecudinhos_episodio_um.jnlp</a></p>
<p>curta o video do preview<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/z5MhjGhQl0o&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/z5MhjGhQl0o&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p><a href="http://svn.vacavitoria.com/cabecudinhos_1/cabecudinhos_1/">e aproveite a moleza do codigo fonte disponivel no subversion</a> <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/16/javafx-cabecudinhos-preview-2009-03-15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javafx group dentro de group</title>
		<link>http://www.athanazio.com/2009/03/14/javafx-group-dentro-de-group/</link>
		<comments>http://www.athanazio.com/2009/03/14/javafx-group-dentro-de-group/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 17:19:03 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[2]]></category>
		<category><![CDATA[dois]]></category>
		<category><![CDATA[Group]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[mutilple]]></category>
		<category><![CDATA[Node]]></category>
		<category><![CDATA[visible]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1749</guid>
		<description><![CDATA[Quando criamos uma cena em Javafx, por vezes precisamos controlar grupos de componentes como um só, neste exemplo demonstro como adicionar dois grupos distintos em uma mesma cena, e fazendo com que uma fique invisivel enquanto a outra visivel. Neste exemplo são criados dois objetos Group que juntos compõe o content da Scene Note que [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/03/groupgroup.png"><img src="http://www.athanazio.com/wp-content/uploads/2009/03/groupgroup.png" alt="groupgroup" title="groupgroup" width="134" height="134" class="alignnone size-full wp-image-1757" /></a><br />
Quando criamos uma cena em Javafx, por vezes precisamos controlar grupos de componentes como um só, neste exemplo demonstro como adicionar dois grupos distintos em uma mesma cena, e fazendo com que uma fique invisivel enquanto a outra visivel. Neste exemplo são criados dois objetos <a href="http://java.sun.com/javafx/1/docs/api/javafx.scene/javafx.scene.Group.html">Group</a> que juntos compõe o content da <a href="http://java.sun.com/javafx/1/docs/api/javafx.scene/javafx.scene.Scene.html">Scene</a></p>
<pre class="brush: java; title: ; notranslate">
import javafx.scene.Cursor;
import javafx.scene.effect.DropShadow;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

/**
 * @author athanazio
 */

Stage {
    title: &quot;Application title&quot;
    width: 250
    height: 150
    scene: Scene {
        content: [
            Group{
                id: &quot;me&quot;
                content: [
                    Rectangle {
                        cursor: Cursor.HAND
                        x: 5
                        y: 25
                        width: 50
                        height: 30
                        arcWidth: 20
                        arcHeight: 20
                        fill: Color.BLACK
                        stroke: Color.BLACK
                        effect: DropShadow{
                            offsetX: 5
                            offsetY: 5
                            color: Color.BLACK
                        }
                    }
                    Text {
                        font: Font {
                            size: 16
                        }
                        x: 10,
                        y: 40
                        content: &quot;one&quot;
                        fill: Color.WHITE
                    }]
                onMouseClicked: function(e){
                    e.node.scene.lookup(&quot;myself&quot;).visible = true;
                    e.node.scene.lookup(&quot;me&quot;).visible = false;
                }
            }
            Group{
                visible: false
                id: &quot;myself&quot;
                content: [
                    Rectangle {
                        cursor: Cursor.HAND
                        x: 65
                        y: 25
                        width: 50
                        height: 30
                        arcWidth: 20
                        arcHeight: 20
                        fill: Color.BLACK
                        stroke: Color.BLACK
                        effect: DropShadow{
                            offsetX: 5
                            offsetY: 5
                            color: Color.BLACK
                        }
                    }
                    Text {
                        font: Font {
                            size: 16
                        }
                        x: 70,
                        y: 40
                        content: &quot;two&quot;
                        fill: Color.WHITE
                    }]
                onMouseClicked: function(e){
                    e.node.scene.lookup(&quot;me&quot;).visible = true;
                    e.node.scene.lookup(&quot;myself&quot;).visible = false;
            }
            }
        ]
    }
}
</pre>
<p>Note que a ideia eh de ter dois grupos, e neste exemplo dentro de cada um um retangulo e um texto, mas qualquer conjunto de <a href="http://java.sun.com/javafx/1/docs/api/javafx.scene/javafx.scene.Node.html">Node</a> poderia ser adicionado. veja no link abaixo a aplicação criada funcionando<br />
<a href='http://www.athanazio.com/wp-content/uploads/2009/03/groupgroup.html'>groupgroup</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/14/javafx-group-dentro-de-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javafx jogos dos cabecudinhos 2 na tela</title>
		<link>http://www.athanazio.com/2009/03/10/javafx-jogos-dos-cabecudinhos-2-na-tela/</link>
		<comments>http://www.athanazio.com/2009/03/10/javafx-jogos-dos-cabecudinhos-2-na-tela/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 03:41:29 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[2 personagens]]></category>
		<category><![CDATA[cabeçudinhos]]></category>
		<category><![CDATA[dosi]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[vacav vitoria]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1728</guid>
		<description><![CDATA[Opa Opa ! grande passo no jogo dos cabeçudinhos ! agora estão os dois na tela, e com movimentos independentes, um pequeno passo para os cabeçudos um grande passo para a vaca vitoria !! huauhahuahu veja o video]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Opa Opa ! grande passo no jogo dos cabeçudinhos ! agora estão os dois na tela, e com movimentos independentes, um pequeno passo para os cabeçudos um grande passo para a vaca vitoria !! huauhahuahu<br />
<a href="http://www.athanazio.com/wp-content/uploads/2009/03/dois-personagens-na-tela.png"><img src="http://www.athanazio.com/wp-content/uploads/2009/03/dois-personagens-na-tela-401x300.png" alt="dois-personagens-na-tela" title="dois-personagens-na-tela" width="401" height="300" class="alignnone size-medium wp-image-1729" /></a></p>
<p>veja o video<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/qlQrDG-jS1A&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/qlQrDG-jS1A&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/10/javafx-jogos-dos-cabecudinhos-2-na-tela/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javafx processo de criação de interface</title>
		<link>http://www.athanazio.com/2009/03/10/javafx-processo-de-criacao-de-interface/</link>
		<comments>http://www.athanazio.com/2009/03/10/javafx-processo-de-criacao-de-interface/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 03:11:04 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[equipe]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[otimizacao]]></category>
		<category><![CDATA[paralelo]]></category>
		<category><![CDATA[processo]]></category>
		<category><![CDATA[separacao]]></category>
		<category><![CDATA[separation]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[vvg]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1720</guid>
		<description><![CDATA[Uma das coisas mais poderosas no JavaFx na minha opiniao eh a possibilidade concreta de dividir esforços da equipe de desenvolvimento e da equipe de design em paralelo. o resumo eh o seguinte : a equipe de programação inicia o processo de desenvolvimento com retangulos, ou desenhos conceituais simples que foram criados em SVG e [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Uma das coisas mais poderosas no JavaFx na minha opiniao eh a possibilidade concreta de dividir esforços da equipe de desenvolvimento e da equipe de design em paralelo.</p>
<p>o resumo eh o seguinte :<br />
a equipe de programação inicia o processo de desenvolvimento com retangulos, ou desenhos conceituais simples que foram criados em SVG e exportados para o JavaFx, enquanto isto a equipe de design pode criar as ilustrações definitivas e quando estiverem prontas serem encaixadas no projeto, permitindo a programação inclusive manipular items das ilustracoes atraves do ID.</p>
<p>vamos mostrar um exemplo passo a passo</p>
<p>o primeiro passo temos a imagem desenhada no inkscape, que vamos assinalar um ID para uma parte da imagem</p>
<p><a href="http://www.athanazio.com/wp-content/uploads/2009/03/object-properties.png"><img class="alignnone size-medium wp-image-1721" title="object-properties" src="http://www.athanazio.com/wp-content/uploads/2009/03/object-properties-279x300.png" alt="object-properties" width="279" height="300" /></a></p>
<p>na tela de propriedades adicionamos o nome do corpo do personagem</p>
<p><img class="alignnone size-full wp-image-1722" title="object-properties2" src="http://www.athanazio.com/wp-content/uploads/2009/03/object-properties2.png" alt="object-properties2" width="248" height="192" /></p>
<p>note que este nome sera usado respeitando maiusculas e minusculas, permitindo que seja manipulado atraves do codigo Javafx pelo desenvolvedor. Agora o próprio designer para testar seu trabalho e deixar pronto para ser usado pela equipe de programação converte seu arquivo SVG para o formato FXZ do JavaFx, e faz isto abrindo o arquivo com o SVG converter que vem no <a href="http://javafx.com/downloads/all.jsp">Production Suite.</a></p>
<p> <a href="http://www.athanazio.com/wp-content/uploads/2009/03/open-with-svg-converter.png"><img class="alignnone size-medium wp-image-1723" title="open-with-svg-converter" src="http://www.athanazio.com/wp-content/uploads/2009/03/open-with-svg-converter-450x90.png" alt="open-with-svg-converter" width="450" height="90" /></a></p>
<p>e executa a conversão do arquivo</p>
<p><a href="http://www.athanazio.com/wp-content/uploads/2009/03/convertit.png"><img class="alignnone size-medium wp-image-1724" title="convertit" src="http://www.athanazio.com/wp-content/uploads/2009/03/convertit-450x121.png" alt="convertit" width="450" height="121" /></a></p>
<p>Agora o arquivo jah pode ser usado dentro do <a href="http://javafx.com/downloads/all.jsp">NetBeans</a>, que oferece uma opção para realizar o preview do arquivo gerado sem sair da ferramenta, veja na tela abaixo</p>
<p><img class="alignnone size-full wp-image-1725" title="details-of-the-node" src="http://www.athanazio.com/wp-content/uploads/2009/03/details-of-the-node.png" alt="details-of-the-node" width="411" height="533" /></p>
<p>Repare que quando clicamos no elemento do corpo do personagem, podemos ver diversas caracteristicas do mesmo, inclusive o ID e o tipo do objeto que eh um <a href="http://java.sun.com/javafx/1.1/docs/api/javafx.scene.shape/javafx.scene.shape.Rectangle.html">Rectangle</a></p>
<p>Repare que na classa <a href="http://svn.vacavitoria.com/cabecudinhos_1/cabecudinhos_1/src/com/vacavitoria/cabecudinhos_1/GameScene.fx">GameScene </a>são definidos objetos do tipo <a href="http://svn.vacavitoria.com/cabecudinhos_1/cabecudinhos_1/src/com/vacavitoria/games/NodeFromFXZ.fx">NodeFromFXZ </a>que eh um wrapper para a carga automática de arquivos do tipo FXZ, facilitando o processo de carga para dentro da aplicação.</p>
<p>E um interessante trecho de código que deve ser destacado, é a parte onde transformamos a cor do corpo do personagem de acordo com o jogador, ou seja o jogador1 fica com azul e o 2 com vermelho, veja neste trecho.</p>
<pre class="brush: java; title: ; notranslate">
        (player1.lookup(&quot;JFX:body&quot;) as Rectangle).fill = Color.BLUE;
</pre>
<p>veja o resultado como ficou !!<br />
<img src="http://www.athanazio.com/wp-content/uploads/2009/03/corpinhos-coloridos.png" alt="corpinhos-coloridos" title="corpinhos-coloridos" width="400" height="362" class="alignnone size-full wp-image-1726" /></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/10/javafx-processo-de-criacao-de-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javafx beta 2009-03-08 dos cabecudinhos</title>
		<link>http://www.athanazio.com/2009/03/08/javafx-beta-2009-03-08-dos-cabecudinhos/</link>
		<comments>http://www.athanazio.com/2009/03/08/javafx-beta-2009-03-08-dos-cabecudinhos/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 13:08:15 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[trecos]]></category>
		<category><![CDATA[cabeçudinhos]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[preview]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1681</guid>
		<description><![CDATA[Opa esta eh uma versao parcial do jogo dos cabecudinhos !! para os catucadores de plantão, aqui ficam os arquivos desta versão http://www.vacavitoria.com/preview/cabecudinhos_1/2009-03-08/]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Opa esta eh uma versao parcial do jogo dos cabecudinhos !!</p>
<p><a href="http://www.vacavitoria.com/preview/cabecudinhos_1/2009-03-08/cabecudinhos_1.jnlp"><img title="executar" src="http://www.athanazio.com/wp-content/uploads/2009/03/webstart_launch.gif" alt="executar" width="88" height="34" /></a></p>
<p>para os catucadores de plantão, aqui ficam os arquivos desta versão<br />
<a href="http://www.vacavitoria.com/preview/cabecudinhos_1/2009-03-08/">http://www.vacavitoria.com/preview/cabecudinhos_1/2009-03-08/</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/08/javafx-beta-2009-03-08-dos-cabecudinhos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javafx personagem que salta nas plataformas</title>
		<link>http://www.athanazio.com/2009/03/08/javafx-personagem-que-salta-nas-plataformas/</link>
		<comments>http://www.athanazio.com/2009/03/08/javafx-personagem-que-salta-nas-plataformas/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 04:42:15 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[cabeçudinhos]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[jump]]></category>
		<category><![CDATA[salto]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1675</guid>
		<description><![CDATA[Uia ! implementei meus rabiscos de gravidade e não eh q funcionou !! hehehe como tinha dito em javafx-planejando-gravidade são 3 classes envolvidas: GravityManager &#8211; fazo update() a cada tick do jogo Force &#8211; aplica mudança de posição aos nodes GNode &#8211; associa Node a Force. Para os catucadores de plantão segue o endereço do [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Uia ! implementei meus rabiscos de gravidade e não eh q funcionou !! hehehe</p>
<p>como tinha dito em <a href="http://www.athanazio.com/2009/03/06/javafx-planejando-gravidade/">javafx-planejando-gravidade</a> são 3 classes envolvidas:</p>
<ul>
<li>GravityManager &#8211; fazo update() a cada tick do jogo</li>
<li>Force &#8211; aplica mudança de posição aos nodes</li>
<li>GNode &#8211; associa Node a Force.</li>
</ul>
<p>Para os catucadores de plantão segue o endereço do subversion<br />
<a href="http://svn.vacavitoria.com/cabecudinhos_1/cabecudinhos_1/">http://svn.vacavitoria.com/cabecudinhos_1/cabecudinhos_1/</a></p>
<p>E alguns fragmentos do codigo<br />
esta eh a Scene em que usei a GravityManager</p>
<pre class="brush: java; title: ; notranslate">
public class GameScene extends Scene, Updatable{
    ...
    public var gravityManager: GravityManager;

    // set the need info for the Scene work
    public function setup(){
        gameSoundtrack.play();

        background =
        lookup(BACKGROUND_ID) as NodeFromFXZ;
        player1 =
        lookup(PLAYER1_ID) as MovableChar;
        player1.background = background;
        player1.requestFocus();

        gravityManager = GravityManager{
            gravity: 5
            content: [
                GNode{
                    node: bind player1
                }
            ]
        }

    }

    public override function update(){
        gravityManager.update();
    }

    override var content = [
        NodeFromFXZ{
            id: bind BACKGROUND_ID
            source: &quot;{__DIR__}media/background.fxz&quot;
        }

        MovableChar{
            id : bind PLAYER1_ID
            source: &quot;{__DIR__}media/boy.fxz&quot;
            x: 50
            y: 450
            speed: 3
            colision: [&quot;casa1&quot;, &quot;casa2&quot;, &quot;casa3&quot;,&quot;casa4&quot;, &quot;casa5&quot;, &quot;casa6&quot;, &quot;casa7&quot;, &quot;casa8&quot;,
             &quot;caixa1&quot;, &quot;caixa2&quot;, &quot;caixa3&quot;,&quot;caixa4&quot;, &quot;caixa5&quot;, &quot;caixa6&quot;,
            &quot;caixa7&quot;, &quot;caixa7b&quot;, &quot;caixa8&quot;, &quot;caixa8b&quot;,
            &quot;left&quot;, &quot;right&quot;, &quot;bottom&quot;,&quot;top&quot;, &quot;plataforma1&quot;]

            onMouseClicked: function(e){
            }

            onKeyReleasedDelegate: function(current:MovableChar, key: KeyCode){
               if( key == KeyCode.VK_SPACE and current.hasColision){
                   fire.play();
                   gravityManager.addForce( current.id, Force {
                        y: -22;
                   });
                }
            }

            onUpdate: function(current:MovableChar){
                current.checkIfScrollBackground();

            }
        }
    ]
}
</pre>
<p>Segue o codigo das classes para o controle da gravidade</p>
<p><strong>GravityManager</strong></p>
<pre class="brush: java; title: ; notranslate">
public class GravityManager extends Updatable{

    public var gravity: Integer;
    public var content: GNode[];

    public function addForce(id:String, force: Force){
        for( gNode in content){
            if( gNode.node.id.equals(id) )  {
                insert force into gNode.forces;
            }
        }
    }

    public override function update(){

        // iterate over all gnodes
        for( gNode in content){
            var x: Integer = 0;
            var y: Integer = gravity;

            // iterate over all Force from the GNode
            for( force in gNode.forces){
                x = x + force.x as Integer;
                y = y + force.y as Integer;

                force.applyGravity(gravity);
                if( force.isDisposable()){
                    delete force from gNode.forces;
                }
            }

            // try to move the Node with the increase of x and y
            gNode.node.moveX(x);
            gNode.node.moveY(y);
        }
    }
}
</pre>
<p><strong>Force.fx</strong></p>
<pre class="brush: java; title: ; notranslate">
public class Force {

    public var x: Number;
    public var y: Number;
    public var percentGravity: Number = 0.15;

    // reduce the x and y value with the gravity
    public function applyGravity(gravity:Integer){
        if( x &lt; 0 ){
            x = x + (gravity * percentGravity);

            if( x &gt; 0 ){
                x = 0;
            }
        }

        if( y &lt; 0 ){
            y = y + (gravity * percentGravity);
            if( y &gt; 0 ){
                y = 0;
            }
        }
    }

    public function isDisposable():Boolean{
        return x == 0 and y == 0;
    }

}
</pre>
<p><strong>GNode</strong></p>
<pre class="brush: java; title: ; notranslate">
public class GNode {

    public var node: MovableChar;
    public var forces: Force[];

}
</pre>
<p>E finalmente o video com o resultado saltitante <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/cdu0S03vauA&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/cdu0S03vauA&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/08/javafx-personagem-que-salta-nas-plataformas/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>javafx planejando gravidade &#8230;</title>
		<link>http://www.athanazio.com/2009/03/06/javafx-planejando-gravidade/</link>
		<comments>http://www.athanazio.com/2009/03/06/javafx-planejando-gravidade/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 01:03:13 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[fisica]]></category>
		<category><![CDATA[gravity]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[physics]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1666</guid>
		<description><![CDATA[Nesta jornada de explorar JavaFx, e na migração do jogo que fizemos no evento do global game jam 2009, estou agora implementando a gravidade para o side scrolling. Ou seja preciso de um mecanismo para manter os personagens no chão &#8230; e que possam dar uns pulinhos, e que não seja soh para cima possam [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Nesta jornada de explorar JavaFx, e na migração do jogo que fizemos no evento do global game jam 2009, estou agora implementando a gravidade para o side scrolling.</p>
<p>Ou seja preciso de um mecanismo para manter os personagens no chão &#8230; e que possam dar uns pulinhos, e que não seja soh para cima possam ser pulinhos para os lados, vejam os rascunho que fiz no ônibus.</p>
<p><a href="http://www.athanazio.com/wp-content/uploads/2009/03/gravity-manager.jpg"><img class="alignnone size-medium wp-image-1667" title="gravity-manager" src="http://www.athanazio.com/wp-content/uploads/2009/03/gravity-manager-423x300.jpg" alt="gravity-manager" width="423" height="300" /></a></p>
<p>A idéia é simples, uma classe para gerenciar a gravidade contendo as lista de plataformas onde será necessário verificar a colisão, para segurar o personagem, uma lista de GNodes que vao ter uma lista de forças que vao incidir sobre e o Node propriamente dito.</p>
<p>cada item que vai representar um Força vai possuir x, y percentual de gravidade que sera aplicado, uma funcao applyGravity(g) e outra para ver se pode remover o objeto da lista, isDisposable()</p>
<p>a logica do update do gravity manager eh :</p>
<ul>
<li>calcular para cada GNode e para cada Força contida o deslocamento x e y do node</li>
<li>chamar para cada força o metodo applyGravity()</li>
<li>remover cada força que retornar true do isDisposable()</li>
</ul>
<p>bem este é o plano, vamos ver se funciona <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/06/javafx-planejando-gravidade/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>javafx layout manager</title>
		<link>http://www.athanazio.com/2009/03/06/javafx-layout-manager/</link>
		<comments>http://www.athanazio.com/2009/03/06/javafx-layout-manager/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 12:45:33 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[trecos]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[layoutmanager]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1662</guid>
		<description><![CDATA[Maneiro este layout manager do JavaFx   http://code.google.com/p/diglayout/]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Maneiro este layout manager do JavaFx</p>
<p><a href="http://www.athanazio.com/wp-content/uploads/2009/03/diglayout.jpg"><img class="alignnone size-thumbnail wp-image-1663" title="diglayout" src="http://www.athanazio.com/wp-content/uploads/2009/03/diglayout-150x150.jpg" alt="diglayout" width="150" height="150" /></a> </p>
<p><a href="http://code.google.com/p/diglayout/">http://code.google.com/p/diglayout/</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/03/06/javafx-layout-manager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>javafx script 15 minutos</title>
		<link>http://www.athanazio.com/2009/02/26/javafx-script-15-minutos/</link>
		<comments>http://www.athanazio.com/2009/02/26/javafx-script-15-minutos/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 15:08:51 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[trecos]]></category>
		<category><![CDATA[15 minutes]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1648</guid>
		<description><![CDATA[isto que eh banho de tecnologia, em 15 minutos um saraivada de javaFx script]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>isto que eh banho de tecnologia, em 15 minutos um saraivada de javaFx script<br />
<embed src="http://blip.tv/play/Ae3kJYm1FA" type="application/x-shockwave-flash" width="320" height="240" allowscriptaccess="always" allowfullscreen="true"></embed> </p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/02/26/javafx-script-15-minutos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javafx quadrado na tela v2</title>
		<link>http://www.athanazio.com/2009/02/15/javafx-quadrado-na-tela-v2/</link>
		<comments>http://www.athanazio.com/2009/02/15/javafx-quadrado-na-tela-v2/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 00:36:15 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[trecos]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[keypressed]]></category>
		<category><![CDATA[keystate]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[movement]]></category>
		<category><![CDATA[tick]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1623</guid>
		<description><![CDATA[Esta e a segunda versão do quadrado na tela, agora com o efeito de manter a tecla pressionada e o movimento acontecer ! para isto acabei definindo uma classe Game que fica com loop principal e todos os Nodes da Scene atual são verificados para execução de um método update(), não sei ainda se dava [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Esta e a segunda versão do quadrado na tela, agora com o efeito de manter a tecla pressionada e o movimento acontecer ! para isto acabei definindo uma classe Game que fica com loop principal e todos os Nodes da Scene atual são verificados para execução de um método update(), não sei ainda se dava para fazer com alguma estrutura do próprio JavaFx, mas assim funcionou.</p>
<p>Olha como ficou o movimento<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/vFdlZA1G7PQ&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/vFdlZA1G7PQ&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>esta é a classe Game, que cria um Timer que executa continuamente, e chama o método update() para todos os Nodes que sao filhos da classe Updatable, no método update() o nosso quadrado muda a sua posicao de acordo com as teclas que estão pressionadas </p>
<pre class="brush: java; title: ; notranslate">
package javafxmeuquadradinho2;

import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 * @author athanazio
 */
public class Game extends Stage {

    public var tick: Timeline = Timeline {
        repeatCount: Timeline.INDEFINITE
        keyFrames: [
            KeyFrame {
                time: 0.05s
                action: function() {
                    mainLoop();
                }
        }]
    };

    // main game loop
    public function mainLoop(){
        for (node in scene.content) {
            if( node instanceof Updatable){
                (node as Updatable).update();
            }
        }
    }

    public function play(){
        tick.play();
    }

}
</pre>
<p>A classe KeyState é usada para manter as informações de que teclas estão pressionadas ou não, Esta solução não permite uma fácil expansão para suportar outras teclas, outra forma seria armazenar uma lista das teclas atualmente pressionadas, e possuir um método para verificar se a tecla X esta pressionada.</p>
<pre class="brush: java; title: ; notranslate">
package javafxmeuquadradinho2;

/**
 * @author athanazio
 */
public class KeyState {
    public var keyUp = false;
    public var keyLeft = false;
    public var keyRight = false;
    public var keyDown = false;
}
</pre>
<p>A classe Updatable define o metodo update() a ser executado no loop principal do jogo.</p>
<pre class="brush: java; title: ; notranslate">
package javafxmeuquadradinho2;

/**
 * @author athanazio
 */
public class Updatable{
    public function update(){

    }
}
</pre>
<p>A classe MovableChar cria neste exemplo um Retangulo associado com as propriedades da classe, e gera os event handlers baseados neste retangulo, melhor seria usar um ImageView para exibir uma imagem, mas isto jah é outra estória &#8230; além disto mantém controle da tecla pressionada, através de uma instância de KeyState, e quando a tecla é liberada desmarca, fazendo com q no próximo update() o movimento naquela direção não ocorra.</p>
<pre class="brush: java; title: ; notranslate">

/*
 * MovableChar.fx
 *
 * Created on Feb 15, 2009, 3:47:31 PM
 */

package javafxmeuquadradinho2;

import javafx.scene.CustomNode;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.Node;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;

/**
 * @author athanazio
 */
public class MovableChar extends CustomNode, Updatable{
    public var speed = 10;
    public var x = 0;
    public var y = 0;
    public var width = 60;
    public var height = 60;
    public var fill: Color;

    var keyState: KeyState = KeyState{
        keyUp: false;
        keyLeft: false;
        keyRight: false;
        keyDown: false;
     };

    public override function create():Node {
        return Rectangle {
            x: bind this.x;
            y: bind this.y;
            width: bind this.width;
            height: bind this.height;
            fill: bind this.fill;

            onKeyPressed: function (e: KeyEvent){
                if( e.code == KeyCode.VK_LEFT ){
                    keyState.keyLeft = true;
                }
                if( e.code == KeyCode.VK_RIGHT ){
                    keyState.keyRight = true;
                }
                if( e.code == KeyCode.VK_UP ){
                    keyState.keyUp = true;
                }
                if( e.code == KeyCode.VK_DOWN ){
                    keyState.keyDown = true;
                }
            }
            onKeyReleased: function(e: KeyEvent){
                if( e.code == KeyCode.VK_LEFT ){
                    keyState.keyLeft = false;
                }
                if( e.code == KeyCode.VK_RIGHT ){
                    keyState.keyRight = false;
                }
                if( e.code == KeyCode.VK_UP ){
                    keyState.keyUp = false;
                }
                if( e.code == KeyCode.VK_DOWN ){
                    keyState.keyDown = false;
                }
            }
        };
    }

    public override function update(){

        if( keyState.keyLeft){
            x = x - speed;
        }

        if( keyState.keyRight){
            x = x + speed;
        }

        if( keyState.keyDown){
            y = y + speed;
        }

        if( keyState.keyUp){
            y = y - speed;
        }
    }

}
</pre>
<p>E finalmente a classe Main que instancia MovableChar e Game e chama o método start de Game.</p>
<pre class="brush: java; title: ; notranslate">
package javafxmeuquadradinho2;

import java.lang.Object;
import javafx.scene.paint.Color;
import javafx.scene.Scene;

/**
 * @author athanazio
 */
var littleBox: MovableChar = MovableChar{
    x: 20,
    y: 20
    width: 60,
    height: 60
    fill: Color.RED
}

var game: Game = Game {
        title: &quot;Movendo um quadrado pela tela&quot;
        width: 640
        height: 480
        scene: Scene {
            content: [
                littleBox
            ]
        }
    }

function run(__ARGS__ : String[]) {
    game.play();
}
</pre>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/02/15/javafx-quadrado-na-tela-v2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>javafx quadrado na tela</title>
		<link>http://www.athanazio.com/2009/02/15/javafx-quadrado-na-tela/</link>
		<comments>http://www.athanazio.com/2009/02/15/javafx-quadrado-na-tela/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 17:50:40 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[trecos]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[keyevent]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1620</guid>
		<description><![CDATA[Ola esta eh a nova serie de Javafx ! a medida que vou avançando vou postando aqui, este eh o primeirao, com um quadradinho se movendo na tela :]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Ola esta eh a nova serie de Javafx ! a medida que vou avançando vou postando aqui, este eh o primeirao, com um quadradinho se movendo na tela :</p>
<p><img src="http://www.athanazio.com/wp-content/uploads/2009/02/javafx-movendo-um-quadrado.png" alt="javafx-movendo-um-quadrado" title="javafx-movendo-um-quadrado" width="320" height="280" class="alignnone size-full wp-image-1621" /></p>
<pre class="brush: java; title: ; notranslate">
package javafxapplication1;

import javafx.scene.input.KeyEvent;
import javafx.scene.paint.Color;
import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.scene.input.KeyCode;

/**
 * @author athanazio
 */
var myChar :Rectangle = Rectangle {
    x: 20,
    y: 20
    width: 60,
    height: 60
    fill: Color.RED
    onKeyPressed: function(e: KeyEvent){
        if( e.code == KeyCode.VK_LEFT ){
            myChar.x -= 3;
        }
        if( e.code == KeyCode.VK_RIGHT ){
            myChar.x += 3;
        }
        if( e.code == KeyCode.VK_UP ){
            myChar.y -= 3;
        }
        if( e.code == KeyCode.VK_DOWN ){
            myChar.y += 3;
        }
    }
};

Stage {
    title: &quot;Movendo um quadrado pela tela&quot;
    width: 320
    height: 280
    scene: Scene {
        content: [
            myChar
        ]
    }
}
</pre>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/02/15/javafx-quadrado-na-tela/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>javafx esta na área</title>
		<link>http://www.athanazio.com/2008/12/04/javafx-esta-na-area/</link>
		<comments>http://www.athanazio.com/2008/12/04/javafx-esta-na-area/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 14:49:23 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[lancamento]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=1417</guid>
		<description><![CDATA[Opa o esperado JavaFx, esta na área ! é uma iniciativa da Sun de assumir o poder e necessidade do desenvolvimento de interfaces, uma linguagem de script com fortes influências do Java e Javascript. veja mais em http://javafx.com/ para aqueles que gostam de ler a API, existe uma bem rica que fornece a base para iniciar [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Opa o esperado JavaFx, esta na área ! é uma iniciativa da Sun de assumir o poder e necessidade do desenvolvimento de interfaces, uma linguagem de script com fortes influências do Java e Javascript.</p>
<p>veja mais em <a href="http://javafx.com/">http://javafx.com/</a></p>
<p>para aqueles que gostam de ler a API, existe uma bem rica que fornece a base para iniciar a implementacao <a href="http://java.sun.com/javafx/1/docs/api/master-index.html">http://java.sun.com/javafx/1/docs/api/master-index.html</a></p>
<p>minha bola de cristal ve possibilidades otimas para o javafx !! =)</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2008/12/04/javafx-esta-na-area/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

