  <?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; java</title>
	<atom:link href="http://www.athanazio.com/category/java/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>fazendo foto 3&#215;4 em java</title>
		<link>http://www.athanazio.com/2011/01/26/fazendo-foto-3x4-em-java/</link>
		<comments>http://www.athanazio.com/2011/01/26/fazendo-foto-3x4-em-java/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 18:25:12 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[fotos]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[3x4]]></category>
		<category><![CDATA[caseiro]]></category>
		<category><![CDATA[de gratis]]></category>
		<category><![CDATA[economizar]]></category>
		<category><![CDATA[foto]]></category>
		<category><![CDATA[foto em casa]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[gratuito]]></category>
		<category><![CDATA[lambe-lambe]]></category>
		<category><![CDATA[não pago]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2824</guid>
		<description><![CDATA[Hoje de tarde perguntei para a secretária da minha esposa que estava rodeando pela casa : &#8221; Ae vai querer umas fotos 3&#215;4 ? to fazendo umas e vou mandar imprimir &#8230; quer ? &#8221; a resposta foi ótima !!! &#8220;pra que ? é tudo digital hoje &#8230; &#8221; pronto eu com cara de tacho, [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Hoje de tarde perguntei para a secretária da minha esposa que estava rodeando pela casa : &#8221; Ae vai querer umas fotos 3&#215;4 ? to fazendo umas e vou mandar imprimir &#8230; quer ? &#8221; a resposta foi ótima !!! &#8220;pra que ? é tudo digital hoje &#8230; &#8221; pronto eu com cara de tacho, maledito condomínio que esta pedindo fotos 3&#215;4 para carteirinha da piscina, não podia ter uma camera por lá ?</p>
<p>Bem choradeira de lado, acabei resgatando um código que tinha feito em 2005 para montar uma folha de impressão de fotos 5&#215;7, porque na época achei um absurdo pagar o preço pedido, ainda acho hehehe, dai fiz as fotos com o ipod mesmo, dei uma arrumada basica no código para suportar mais dimensões do que o 5&#215;7 e pronto !! recebe como input uma imagem jpg e monta uma outra de saida no tamanho 1000&#215;1500 que eh para ser impressa no tamanho 10&#215;15.</p>
<p>clique na imagem para ver como fica o resultado :<br />
<a href="http://www.athanazio.com/wp-content/uploads/2011/01/300_400_mario.jpg"><img src="http://www.athanazio.com/wp-content/uploads/2011/01/300_400_mario-150x150.jpg" alt="" title="300_400_mario" width="150" height="150" class="alignnone size-thumbnail wp-image-2825" /></a><br />
<a href="http://www.athanazio.com/wp-content/uploads/2011/01/300_400_cachorro.jpg"><img src="http://www.athanazio.com/wp-content/uploads/2011/01/300_400_cachorro-150x150.jpg" alt="" title="300_400_cachorro" width="150" height="150" class="alignnone size-thumbnail wp-image-2826" /></a></p>
<p>o código em si não é complicado, é soh ter alguns cuidados na hora de compor a imagem de resultado e todos ficaram felizes, segue o código</p>
<pre class="brush: java; title: ; notranslate">
package br.com.thz.photo;

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.ImageIcon;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class ProtoComposer {

	private static final int BORDER = 5;

	public static void main(String[] args) throws FileNotFoundException, IOException {

		createImage3_4(&quot;mario.jpg&quot;);
		createImage3_4(&quot;cachorro.jpg&quot;);

	}

	private static void createImage3_4(String fileName) throws FileNotFoundException, IOException {
		createImage(fileName, 300, 400);
	}

	private static void createImage5_7(String fileName) throws FileNotFoundException, IOException {
		createImage(fileName, 500, 700);
	}

	private static void createImage(String fileName, int width, int height) throws FileNotFoundException, IOException {
		int x = 0;
		int y = 0;
		int maxWidth = 1000;
		int maxHeight = 1500;

		BufferedImage buffer = new BufferedImage(maxWidth, maxHeight, BufferedImage.TYPE_INT_RGB);
		Graphics2D g2 = buffer.createGraphics();
		ImageIcon image = new ImageIcon(fileName);

		g2.setColor(Color.WHITE);
		g2.fillRect(0, 0, maxWidth, maxHeight);

		// font definition
		Font font = new Font(&quot;Tahoma&quot;, Font.BOLD, 30);
		g2.setFont(font);

		// draw images with the dimension informed
		while ((x + width) &lt;= maxWidth) {
			while ((y + height) &lt;= maxHeight) {
				drawImageWithTimeStamp(g2, image.getImage(), x, y, width, height);
				y += height;
			}
			x += width;
			y = 0;
		}

		generateJPG(buffer, width +&quot;_&quot; + height + &quot;_&quot; + fileName);
	}

	private static void drawImageWithTimeStamp(Graphics2D g2, Image image, int x, int y, int w, int h) {
		g2.drawImage(image, x + BORDER, y + BORDER, w - BORDER, h - BORDER, null);

		String text = getDate();
		FontMetrics metrics = g2.getFontMetrics();
		Rectangle2D rect = metrics.getStringBounds(text, 0, text.length(), g2);
		g2.setColor(Color.BLACK);

		int lateral = (int) ((w - rect.getWidth()) / 2.0);
		Rectangle toFill = new Rectangle();
		toFill.x = x + lateral - BORDER;
		toFill.y = (int) (y + h - (2 * BORDER) - rect.getHeight());
		toFill.height = (int) rect.getHeight();
		toFill.width = (int) rect.getWidth() + BORDER;

		g2.fillRect(toFill.x, toFill.y, toFill.width, toFill.height);
		g2.setColor(Color.WHITE);
		g2.drawString(text, toFill.x, (int) (toFill.y + rect.getHeight() - (2 * BORDER)));

	}

	public static String getDate() {
		SimpleDateFormat sdf = new SimpleDateFormat(&quot;dd-MMM-yyyy&quot;);
		return sdf.format(new Date());
	}

	private static void generateJPG(BufferedImage buffer, String fileName) throws FileNotFoundException, IOException {

		FileOutputStream file = new FileOutputStream(fileName);

		JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(file);
		JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(buffer);
		param.setQuality(1.0F, true);
		encoder.setJPEGEncodeParam(param);

		encoder.encode(buffer);
		file.close();
	}

}
</pre>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2011/01/26/fazendo-foto-3x4-em-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>zk e a versao certa das bibliotecas</title>
		<link>http://www.athanazio.com/2010/10/22/zk-e-a-versao-certa-das-bibliotecas/</link>
		<comments>http://www.athanazio.com/2010/10/22/zk-e-a-versao-certa-das-bibliotecas/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 03:03:30 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[5]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[zk]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2761</guid>
		<description><![CDATA[se vc acredita que o ZK eh realmente uma ferramenta maneira, estamos juntos entao vale a dica, apos a instalacao do ZKStudio, mais conhecido com ambiente do Eclipse para o ZK, nao eh a ultima versao do ZK que vai estar instalada, eh a versão 3 qualquer coisa que vem no studio, mas algumas funcionalidades [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>se vc acredita que o ZK eh realmente uma ferramenta maneira, estamos juntos <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  entao vale a dica, apos a instalacao do ZKStudio, mais conhecido com ambiente do Eclipse para o ZK, nao eh a ultima versao do ZK que vai estar instalada, eh a versão 3 qualquer coisa que vem no studio, mas algumas funcionalidades só tem na versão 5.</p>
<p>para resolver baixe a versão 5, descompacte o diretório e va nas preferências do eclipse para importar o novo diretório com as bibliotecas da versão 5, como na figura abaixo<br />
<a href="http://www.athanazio.com/wp-content/uploads/2010/10/2010-10-22_0057.png"><img src="http://www.athanazio.com/wp-content/uploads/2010/10/2010-10-22_0057-431x300.png" alt="" title="2010-10-22_0057" width="431" height="300" class="alignnone size-medium wp-image-2762" /></a></p>
<p>e depois de atualizar, pode tambe ir nas propiedades do projeto e alterar para a nova versão que ele atualiza legal o projeto ! mas cuidado que não funciona no eclipse Helios !!! que é o mais novo, funciona maneiro no Galileo que é o anterior.</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/10/22/zk-e-a-versao-certa-das-bibliotecas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>copiando arquivos para a area de transferencia</title>
		<link>http://www.athanazio.com/2010/10/11/copiando-arquivos-para-a-area-de-transferencia/</link>
		<comments>http://www.athanazio.com/2010/10/11/copiando-arquivos-para-a-area-de-transferencia/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 02:03:41 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[trecos]]></category>
		<category><![CDATA[automatizacao]]></category>
		<category><![CDATA[clipboard]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[folder]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[jing]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[paste]]></category>
		<category><![CDATA[shared folder]]></category>
		<category><![CDATA[VBOXSVR]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2742</guid>
		<description><![CDATA[maquina nova = problemas novos ! agora usando um macbook estou estava enfrentando um probleminha que era recuperar imagens capturadas com o Jing no mac para dentro de uma maquina virtual virtualbox windows. Trocando em miudos &#8230; Tenho o jing instalado no Mac e copio uma parte da tela e quero usar na area de [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>maquina nova = problemas novos !<br />
agora usando um <a href="http://www.apple.com/br/macbookpro/">macbook</a> estou estava enfrentando um probleminha que era recuperar imagens capturadas com o <a href="http://www.techsmith.com/jing/">Jing</a> no mac para dentro de uma maquina virtual virtualbox windows.<br />
Trocando em miudos &#8230;<br />
Tenho o jing instalado no Mac e copio uma parte da tela e quero usar na area de transferencia dentro de um windows xp rodando numa maquina virtual.<br />
solução encontrada : configurei o Jing para salvar a imagem numa pasta :<br />
<a href="http://www.athanazio.com/wp-content/uploads/2010/10/2010-10-11_2237.png"><img src="http://www.athanazio.com/wp-content/uploads/2010/10/2010-10-11_2237.png" alt="" title="2010-10-11_2237" width="323" height="126" class="alignnone size-full wp-image-2743" /></a></p>
<p><a href="http://www.athanazio.com/wp-content/uploads/2010/10/2010-10-11_2239.png"><img src="http://www.athanazio.com/wp-content/uploads/2010/10/2010-10-11_2239.png" alt="" title="2010-10-11_2239" width="493" height="299" class="alignnone size-full wp-image-2744" /></a></p>
<p>apos isto mapeamos a pasta no virtualbox para ser uma pasta compartilhada dentro do virtualbox, selecione o icone de pastas compartilhadas a partir da janela da maquina virtual rodando<br />
<img src="http://www.athanazio.com/wp-content/uploads/2010/10/2010-10-11_2242.png" alt="" title="2010-10-11_2242" width="294" height="190" class="alignnone size-full wp-image-2745" /></p>
<p>e depois clique para criar uma uma pasta compartilhada permanente<br />
<img src="http://www.athanazio.com/wp-content/uploads/2010/10/2010-10-11_2243.png" alt="" title="2010-10-11_2243" width="628" height="395" class="alignnone size-full wp-image-2746" /></p>
<p>Agora estamos prontos para ler os arquivos no windows, que esta rodando na maquina virtual, para isto vamos mapear a pasta compartilhada para o drive X: no windows </p>
<p>abra uma janela do windows explorer e escolha a opção tools / map network drive<br />
<img src="http://www.athanazio.com/wp-content/uploads/2010/10/2010-10-11_2248.png" alt="" title="2010-10-11_2248" width="516" height="331" class="alignnone size-full wp-image-2747" /></p>
<p>escolha o drive X, ou outra letra q preferir, e associe a pasta \\VBOXSVR\nome-da-pasta, se o nome da pasta compartilhada que vc escolheu foi &#8220;minha-pasta&#8221; o mapeamento do drive sera para \\VBOXSVR\minha-pasta, não esqueça de marcar para o mapeamento funcionar apos o boot também.</p>
<p>apos isto procurei um pouco na internet e achei um codigo quase pronto para copiar uma imagem para a area de transferencia, foi soh fazer um codigo para ler a pasta procurando por uma imagem e copiando ela para a area de transferencia &#8230; facim facim &#8230; <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>depois fiz um bat para executar o jar que fica em loop procurando por imagens numa pasta, funcionou que eh uma maravilha e ainda copia a imagem recem processada para a pasta old, ahhhh o cheiro no ar de codigo java sendo executado huauhahuahuau</p>
<p>para os curiosos de plantão eis ai o codigo</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.image;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.IOException;

import javax.swing.ImageIcon;

public class CopyImageToClipboard {

	public static void main(String[] args) throws InterruptedException {

		String start = &quot;x:/clipboard/&quot;;
		File folder = new File(start);
		File folderOld = new File(start + &quot;old&quot;);
		folderOld.mkdir();

		while(true){
			String [] files = folder.list();
			for (int i = 0; i &lt; files.length; i++) {
				if( files[i].endsWith(&quot;.png&quot;)){
					System.out.println(&quot;copy file : &quot; + files[i]);
					ImageIcon icon = new ImageIcon(start + files[i]);
					setClipboard( icon.getImage());
					File image = new File(start + files[i]);
					image.renameTo( new File(start + &quot;old/&quot; + files[i]));
					break;
				}

			}
			Thread.sleep(300);
		}
	}

	public static void setClipboard(Image image) {
		ImageSelection imgSel = new ImageSelection(image);
		Toolkit.getDefaultToolkit().getSystemClipboard().setContents(imgSel, null);
	}

	// This class is used to hold an image while on the clipboard.
	public static class ImageSelection implements Transferable {
		private Image image;

		public ImageSelection(Image image) {
			this.image = image;
		}

		// Returns supported flavors
		public DataFlavor[] getTransferDataFlavors() {
			return new DataFlavor[] { DataFlavor.imageFlavor };
		}

		// Returns true if flavor is supported
		public boolean isDataFlavorSupported(DataFlavor flavor) {
			return DataFlavor.imageFlavor.equals(flavor);
		}

		// Returns image
		public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
			if (!DataFlavor.imageFlavor.equals(flavor)) {
				throw new UnsupportedFlavorException(flavor);
			}
			return image;
		}
	}

}
</pre>
<p>parte do codigo usado de <a href="http://elliotth.blogspot.com/2005/09/copying-images-to-clipboard-with-java.html">http://elliotth.blogspot.com/2005/09/copying-images-to-clipboard-with-java.html</a> </p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/10/11/copiando-arquivos-para-a-area-de-transferencia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gwt e o StringTokenizer</title>
		<link>http://www.athanazio.com/2010/06/20/gwt-e-o-stringtokenizer/</link>
		<comments>http://www.athanazio.com/2010/06/20/gwt-e-o-stringtokenizer/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 14:01:12 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[stringtokenizer]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2645</guid>
		<description><![CDATA[ahhh meu bom amigo StringTokenizer &#8230; tu não eh bemvindo no mundo GWT &#8230; too bad, adios ! Ao que tudo indica a emulação de de Java -> Javascript do GWT não inclui a classe StringTokenizer, fazer o que ? usar o String.split()]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>ahhh meu bom amigo <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/StringTokenizer.html">StringTokenizer </a>&#8230; tu não eh bemvindo no mundo GWT &#8230; too bad, adios !<br />
<a href="http://www.athanazio.com/wp-content/uploads/2010/06/stringtokenizer-no-gwt.jpg"><img src="http://www.athanazio.com/wp-content/uploads/2010/06/stringtokenizer-no-gwt-450x210.jpg" alt="" title="stringtokenizer no gwt" width="450" height="210" class="alignnone size-medium wp-image-2646" /></a><br />
Ao que tudo indica a <a href="http://code.google.com/intl/pt-BR/docreader/#p=google-web-toolkit-doc-1-5&#038;s=google-web-toolkit-doc-1-5&#038;t=RefJreEmulation">emulação de de Java -> Javascript do GWT</a> não inclui a classe StringTokenizer, fazer o que ? usar o <a href="http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)">String.split()</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/06/20/gwt-e-o-stringtokenizer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>smartgwt eh maneiro</title>
		<link>http://www.athanazio.com/2010/06/17/smartgwt-eh-maneiro/</link>
		<comments>http://www.athanazio.com/2010/06/17/smartgwt-eh-maneiro/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 12:42:13 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[smartgwt]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2632</guid>
		<description><![CDATA[sim SmartGWT eh maneiro saca soh o demo online dos componentes ! http://www.smartclient.com/smartgwt/showcase/#main]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2010/06/smartgwt-eh-maneiro.jpg"><img src="http://www.athanazio.com/wp-content/uploads/2010/06/smartgwt-eh-maneiro.jpg" alt="" title="smartgwt eh maneiro" width="450" height="219" class="alignnone size-full wp-image-2633" /></a><br />
sim SmartGWT eh maneiro<br />
saca soh o demo online dos componentes !<br />
<a href="http://www.smartclient.com/smartgwt/showcase/#main">http://www.smartclient.com/smartgwt/showcase/#main</a></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/06/17/smartgwt-eh-maneiro/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>erro com id</title>
		<link>http://www.athanazio.com/2010/06/14/erro-com-id/</link>
		<comments>http://www.athanazio.com/2010/06/14/erro-com-id/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 19:31:03 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[exception]]></category>
		<category><![CDATA[id]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2603</guid>
		<description><![CDATA[quantas vezes não fiquei fuçando arquivo de log atrás de um erro, e sempre era algo do tipo : aconteceu lá pelas 10 da manhã, e nem sempre a data do servidor estava &#8230; assim como diremos &#8230; certa ! ou seja quase sempre o erro é achado quase por milagre Um dia destes não [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>quantas vezes não fiquei fuçando arquivo de log atrás de um erro, e sempre era algo do tipo : aconteceu lá pelas 10 da manhã, e nem sempre a data do servidor estava &#8230; assim como diremos &#8230; certa ! ou seja quase sempre o erro é achado quase por milagre <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Um dia destes não sei que servidor que estava acessando e rolou um erro no server bizzaro, que explodiu um monte de caracteres na saida http, mas a mensagem era algo do tipo : oh este monte de letras ae em baixo explica o que aconteceu para alguem que saiba ler isto &#8230; e era um monte de dados no formato BASE64, não me dei ao trabalho de converter de volta, mas criptografar um stacktrace de um erro, e colocar no formato BASE64 para poder mostrar pareceu uma idéia bem legal.</p>
<p>fiz uma versão reduzida disto, gerando somente um ID para o erro e retornando junto com a mensagem de erro assim na comunicação entre usuário e suporte surge um elemento em comum que é o identificador do erro.</p>
<p>o código Java é extremamente simples, as podia ser mais simples ainda heheheh</p>
<pre class="brush: java; title: ; notranslate">
public class ErrorID {

	private static int counter = 0;

	public static synchronized String getErrorID(String string) {
		String result = string + &quot; ERROR.ID:&quot; + System.currentTimeMillis() + &quot;-&quot; + counter++;
		if (counter &gt;= Integer.MAX_VALUE - 1) {
			counter = 0;
		}
		return result;
	}
}
</pre>
<p>e na hora de usar é algo do tipo :</p>
<pre class="brush: java; title: ; notranslate">
...
} catch (SQLException e) {
    String errorID = ErrorID.getErrorID(&quot;error inserting something&quot;);
    logger.error(errorID, e);
    throw new Exception(errorID);
...
</pre>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/06/14/erro-com-id/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>biblioteca para Json em Java</title>
		<link>http://www.athanazio.com/2010/06/13/biblioteca-para-json-em-java/</link>
		<comments>http://www.athanazio.com/2010/06/13/biblioteca-para-json-em-java/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 18:04:17 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[gson]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/2010/06/13/bibliotec-para-json-em-java/</guid>
		<description><![CDATA[Como estou implementando uma integracao entre servidores, a comunicacao vai ser no formato JSON (apesar dos dois por enquanto serem Java), vamos ver se a biblioteca&#160;http://code.google.com/p/google-gson/&#160;resolve o problema de serializar para lah e para cah]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Como estou implementando uma integracao entre servidores, a comunicacao vai ser no formato JSON (apesar dos dois por enquanto serem Java),
<div>vamos ver se a biblioteca&nbsp;<a href="http://code.google.com/p/google-gson/">http://code.google.com/p/google-gson/</a>&nbsp;resolve o problema de serializar para lah e para cah <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/06/13/biblioteca-para-json-em-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>InputStream eh seu amigo</title>
		<link>http://www.athanazio.com/2010/06/13/inputstream-eh-seu-amigo/</link>
		<comments>http://www.athanazio.com/2010/06/13/inputstream-eh-seu-amigo/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 04:58:00 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[bytes read]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[inputstream]]></category>
		<category><![CDATA[rede]]></category>
		<category><![CDATA[stream]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/2010/06/13/inputstream-eh-seu-amigo/</guid>
		<description><![CDATA[escrevendo codigo para comunicacao em rede em Java e diversao garantida, na verdade eh diversao em qualquer linguagem &#8230; nestas aventuras eu estava passando por um problema muito interessante, que vou compartilhar. Uma aplicacao amiga de streaming de video que manda imagens de um servidor para um cliente, que rodando o cliente na propria maquina [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>escrevendo codigo para comunicacao em rede em Java e diversao garantida, na verdade eh diversao em qualquer linguagem &#8230;
<p>nestas aventuras eu estava passando por um problema muito interessante, que vou compartilhar. </p>
<p>Uma aplicacao amiga de streaming de video que manda imagens de um servidor para um cliente, que rodando o cliente na </p>
<p>propria maquina do servidor todos iam felizes, ateh que resolvi testar acessando de outra maquina &#8230; legal funcionou maneiro !</p>
<p>de outra maquina diferente &#8230; bum !! os dados davam uma zoneada firme !! nossa pensei que podia ser perda de pacote, configuracao de rede e outros breguetes.</p>
<p>mas o problema real, eh que um valorzim sinistro que eh sempre esquecido, estava de fato sendo esquecido, que eh o numero de bytes lidos pelo stream <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>ou seja na maioria dos casos o inputstream lia o tamanho do buffer, mas as vezes nao conseguia encher o buffer, e o numero vinha menor !!!</p>
<p>e eu nao estava verificando isto (topeira)</p>
<p>o codigo alterado ficou mais ou menos assim (o trecho do inputstream)</p>
<p><code>int bytesRead = reader.read(buffer);while (bytesRead &lt; buffer.length) {bytesRead += reader.read(buffer, bytesRead, buffer.length - bytesRead);}</code></p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/06/13/inputstream-eh-seu-amigo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>listando metodos das classes de JAR</title>
		<link>http://www.athanazio.com/2010/03/25/listando-metodos-das-classes-de-jar/</link>
		<comments>http://www.athanazio.com/2010/03/25/listando-metodos-das-classes-de-jar/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 13:11:09 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2504</guid>
		<description><![CDATA[Uma tarefa que acontece ocasionalmente é a de encontrar uma classe dentro de arquivos JAR, a solução é algo como varrer o conteúdo do JAR como um Zip que é, e examinar os itens do arquivo, e neste exemplo como estou usando o nome das classes para instanciar objetos do tipo Class que representem a [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Uma tarefa que acontece ocasionalmente é a de encontrar uma classe dentro de arquivos JAR, a solução é algo como varrer o conteúdo do JAR como um Zip que é, e examinar os itens do arquivo, e neste exemplo como estou usando o nome das classes para instanciar objetos do tipo Class que representem a definição da classe, o jar em questão deve estar no classpath da aplicacação.</p>
<p>segue ae o código, divirtam-se</p>
<pre class="brush: java; title: ; notranslate">
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class SaveMethodNames {
	public static void main(String[] args) throws IOException,
			ClassNotFoundException {

		String jarName = args[0];
		String resultName = jarName + &quot;.csv&quot;;
		BufferedWriter writer = new BufferedWriter(new FileWriter(resultName));
		writer.write(&quot;CLASSNAME,METHOD\r&quot;);
		String output = null;

		String[] classes = getClassNames(jarName);
		for (int i = 0; i &lt; classes.length; i++) {
			System.out.println(classes[i]);

			String[] methods = getMethodNames(classes[i]);
			for (int j = 0; j &lt; methods.length; j++) {
				System.out.println(&quot;\t&quot; + methods[j]);
				output = classes[i] + &quot;,&quot; + methods[j] + &quot;\r&quot;;
				writer.write(output);
			}
		}

		writer.flush();
		writer.close();
	}

	private static String[] getMethodNames(String className) {
		Class classDef;
		String[] result = new String[0];

		try {
			classDef = Class.forName(className);
			Method[] methods = classDef.getMethods();
			result = new String[methods.length];

			for (int i = 0; i &lt; methods.length; i++) {
				result[i] = methods[i].toString();
			}
		} catch (Throwable e) {
			System.out.println(&quot;not able to get the methods from : &quot;
					+ className);
		}
		return result;
	}

	public static String[] getClassNames(String jarName) throws IOException {
		ZipFile jar = new ZipFile(jarName);
		Enumeration entries = jar.entries();
		String className = null;
		ArrayList temp = new ArrayList();

		while (entries.hasMoreElements()) {
			ZipEntry entry = (ZipEntry) entries.nextElement();
			if (!entry.isDirectory()) {
				if (isClassName(entry.getName())) {
					className = formatClassName(entry.getName());
					temp.add(className);
				}
			}
		}
		jar.close();

		String[] result = new String[temp.size()];
		result = (String[]) temp.toArray(result);
		return result;
	}

	private static String formatClassName(String name) {
		name = name.replaceAll(&quot;/&quot;, &quot;.&quot;);
		name = name.replaceAll(&quot;.class&quot;, &quot;&quot;);
		return name;
	}

	private static boolean isClassName(String name) {
		return name.indexOf(&quot;.class&quot;) &gt;= 0;
	}

}
</pre>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2010/03/25/listando-metodos-das-classes-de-jar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ano de jogos e a vinda do jaga</title>
		<link>http://www.athanazio.com/2009/12/10/ano-de-jogos-e-a-vinda-do-jaga/</link>
		<comments>http://www.athanazio.com/2009/12/10/ano-de-jogos-e-a-vinda-do-jaga/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 18:10:33 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[jaga]]></category>
		<category><![CDATA[ludum dare]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2364</guid>
		<description><![CDATA[Ahhhh 2009 terminando, quanta coisa aconteceu !! minha investida no mercado de jogos esta crescendo, consegui fazer vários jogos este ano, vários mesmo !! dá uma olhada na lista : http://www.athanazio.com/jogos/ e nesta jornada usei diversas tecnologias diferentes: XNA, SDL, Lõve, Java, Unity3D delícia !! agora com a experiência que acumulei estou iniciando o desenvolvimento [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Ahhhh 2009 terminando, quanta coisa aconteceu !! minha investida no mercado de jogos esta crescendo, consegui fazer vários jogos este ano, vários mesmo !! dá uma olhada na lista : <a href="http://www.athanazio.com/jogos/">http://www.athanazio.com/jogos/</a> e nesta jornada usei diversas tecnologias diferentes: <a href="http://creators.xna.com/en-US/">XNA</a>, <a href="http://www.libsdl.org/">SDL</a>, <a href="http://love2d.org/">Lõve</a>, <a href="http://java.com">Java</a>, <a href="http://unity3d.com/">Unity3D </a>delícia !! agora com a experiência que acumulei estou iniciando o desenvolvimento de um framework para jogos, onde o desenvolvimento será em <a href="http://www.lua.org/">Lua </a>e o backend em Java.</p>
<p>A implementação da primeira versão de testes foi feita para o sistema operacional Android, e pretendo ter a versão para web pronta para o<a href="http://www.ludumdare.com/compo/2009/11/13/announcing-ludum-dare-16-december-11th-13th-weekend/"> próximo Ludum Dare</a> ! espera otimas novidades ! assim que tiver um release para download vai estar em <a href="http://jaga.athanazio.com">jaga.athanazio.com</a></p>
<p>abs</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/12/10/ano-de-jogos-e-a-vinda-do-jaga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>android game &#8211; imagem e som</title>
		<link>http://www.athanazio.com/2009/11/21/android-game-imagem-e-som/</link>
		<comments>http://www.athanazio.com/2009/11/21/android-game-imagem-e-som/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 20:17:03 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programacao]]></category>
		<category><![CDATA[.ogg]]></category>
		<category><![CDATA[.png]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[effect]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[soundtrack]]></category>
		<category><![CDATA[sprite]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/?p=2315</guid>
		<description><![CDATA[Opa ! apos algumas idas e vindas no codigo, as coisas começam a se arrumar hehehehe, nesta versão já esta resolvida a exibição de imagem a partir do nome da imagem, e execução de som no formato ogg, tanto no loop como um som a partir de um evento do usuário. Apesar da recomendação do [...]]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/11/android-show-image.png"><img src="http://www.athanazio.com/wp-content/uploads/2009/11/android-show-image-450x300.png" alt="android show image" title="android show image" width="450" height="300" class="alignnone size-medium wp-image-2316" /></a><br />
Opa ! apos algumas idas e vindas no codigo, as coisas começam a se arrumar hehehehe, nesta versão já esta resolvida a exibição de imagem a partir do nome da imagem, e execução de som no formato ogg, tanto no loop como um som a partir de um evento do usuário.</p>
<p>Apesar da recomendação do SDK seja de acessar os arquivos de midia através do resource ID criado na classe R, eu estou construindo as classes usando o nome do resource para poder expandir a programação do jogo para uma lingaguem de script, e usar o java como uma camada de abstração do jogo.</p>
<p>Vamos ao codigo e alguns comentarios sobre cada um :</p>
<p><strong>GameActivity </strong>- ganhou uma nova chamada para determinar que volume o jogo vai usar, setVolumeControlStream(AudioManager.STREAM_MUSIC) assim o jogo fica com o mesmo volume que estiver acertado para a musica, alem disto o metodo onDestroy() chama o novo metodo release() da view que vai se encarregar de liberar recursos e em especial mandar os audios se calarem <img src='http://www.athanazio.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.showimage;

import android.app.Activity;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.Window;

public class GameActivity extends Activity {
	private GameView view;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setVolumeControlStream(AudioManager.STREAM_MUSIC);

		view = new GameView(this, getResources());
		setContentView(view);
	}

	protected void onDestroy() {
		super.onDestroy();
		view.release();
	}

}
</pre>
<p><strong>GameView</strong> &#8211; usa as classes Sprite e Audio para exibir imagens e tocar audio, poucas mudanças comparando com a versão anterior.</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.showimage;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;

public class GameView extends View implements Runnable {

	private static final String TAG = &quot;GAME VIEW&quot;;

	private static final int INTERVAL = 10;
	private Paint cPaint;

	private boolean running = true;

	FPSCounter fps;

	private Sprite background;
	private Sprite cloud;

	private Audio soundtrack;
	private Audio touch;

	public GameView(Context context, Resources resources) {
		super(context);

		String packageName = getClass().getPackage().getName();

		background = new Sprite(resources, packageName, &quot;background&quot;);
		cloud = new Sprite(resources, packageName, &quot;cloud&quot;);
		cloud.setCenterAtMiddle();

		soundtrack = new Audio(resources, packageName, &quot;soundtrack&quot;);
		touch = new Audio(resources, packageName, &quot;cowbell&quot;);

		soundtrack.setLooping(true);
		soundtrack.play();

		cPaint = new Paint();
		setFocusable(true);
		setClickable(true);
		setLongClickable(true);

		fps = new FPSCounter();

		// Set the background
		this.setBackgroundColor(Color.WHITE);
		Log.i(TAG, &quot;game view created&quot;);

		Thread monitorThread = new Thread(this);
		monitorThread.setPriority(Thread.MIN_PRIORITY);
		monitorThread.start();
	}

	public void draw(Canvas canvas) {
		super.draw(canvas);

		background.draw(canvas);
		cloud.draw(canvas);

		cPaint.setColor(Color.WHITE);
		canvas.drawText(fps.getFPS(), 20, 20, cPaint);
	}

	public boolean onKeyUp(int keyCode, KeyEvent event) {
		return super.onKeyUp(keyCode, event);
	}

	public boolean onKeyDown(int keyCode, KeyEvent event) {
		boolean handled = false;
		Log.i(TAG, &quot;key down&quot;);
		float x = cloud.getX();
		float y = cloud.getY();

		if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
			y = y - 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
			y = y + 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
			x = x - 5;
			handled = true;
		} else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
			x = x + 5;
			handled = true;
		}

		cloud.move(x, y);
		return handled;
	}

	public boolean onTouchEvent(MotionEvent event) {
		cloud.setX(event.getRawX());
		cloud.setY(event.getRawY());
		Log.i(TAG, &quot;on touch&quot;);

		touch.play();
		return super.onTouchEvent(event);
	}

	public void run() {
		while (running) {
			try {
				Thread.sleep(INTERVAL);
			} catch (InterruptedException e) {
				Log.e(TAG, &quot;main loop finished&quot;);
			}
			update();
			postInvalidate();
		}
	}

	private void update() {
		fps.update();

	}

	public void release() {
		running = false;
		soundtrack.release();
		touch.release();
	}

}
</pre>
<p><strong>Sprite</strong> &#8211; esta eh responsavel por exibir imagens na tela, uma atenção especial deve ser dada ao recurso de determinar o centro da imagem, isto eh muito util para responder eventos de mouse, e por exemplo posicionar a imagem centralizada onde o usuário clicou, o método setCenterAtMiddle() calcula a posição para desenhar baseado na largura e altura da imagem. e por default o centro da imagem eh no 0,0.</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.showimage;

import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.Log;

public class Sprite {

	private static final String TAG = &quot;GAME SPRITE&quot;;
	private Bitmap bitmap;
	private float x;
	private float y;
	private float centerX;
	private float centerY;
	private float drawX;
	private float drawY;
	private Paint paint;

	public Sprite(Resources resources, String packageName, String name) {
		String logFileName = packageName + &quot; &quot; + name;
		Log.i(TAG, &quot;loading image : &quot; + logFileName);

		int id = resources.getIdentifier(name, &quot;drawable&quot;, packageName);
		bitmap = BitmapFactory.decodeResource(resources, id);
		centerX = 0;
		centerY = 0;

		setX(0);
		setY(0);

		this.paint = new Paint();
	}

	public void draw(Canvas canvas) {
		canvas.drawBitmap(bitmap, drawX, drawY, paint);
	}

	public void move(float x, float y) {
		setX(this.x + x);
		setY(this.y + y);
	}

	public void setCenterAtMiddle(){
		centerX = bitmap.getWidth() / 2F;
		centerY = bitmap.getHeight() / 2F;
	}

	public float getX() {
		return x;
	}

	public void setX(float x) {
		this.x = x;
		drawX = this.x - centerX;
	}

	public float getY() {
		return y;
	}

	public void setY(float y) {
		this.y = y;
		drawY = this.y - centerY;
	}

}
</pre>
<p><strong>Audio</strong> &#8211; esta classe esconde a criação de um MediaPlayer para cada som que se deseja tocar, imagino que o melhor cenário seria ter uma classe para som em loop que usaria um MediaPlayer, e outra classe para efeitos sonoros que tocaria no maximo N efeitos ao mesmo tempo, mantendo menos objetos MediaPlayer na memória.</p>
<p>Mas a implementação atual mantém um MediaPlayer para cada som, observar que o resource ID é recuperado pelo nome do arquivo usando o metodo resources.getIdentifier(name, &#8220;raw&#8221;, packageName) e a partir do resource ID podemos recuperar o AssetFileDescriptor com a chamada resources.openRawResourceFd(id), of file descriptor é usado para inicializar o MediaPlayer com os detalhes necessários a execução do som.</p>
<pre class="brush: java; title: ; notranslate">
package com.athanazio.android.showimage;

import android.content.res.AssetFileDescriptor;
import android.content.res.Resources;
import android.media.MediaPlayer;
import android.util.Log;

/**
 * Audio resources abstraction
 *
 * @author athanazio
 * @see &quot;http://developer.android.com/intl/fr/guide/topics/media/index.html&quot;
 * @see &quot;http://developer.android.com/intl/fr/reference/android/media/MediaPlayer.html#Valid_and_Invalid_States&quot;
 */
public class Audio {

	private static final String TAG = &quot;GAME AUDIO&quot;;
	private MediaPlayer player;
	private boolean ready;
	private int id;
	private AssetFileDescriptor afd;

	/**
	 *
	 * @param resources
	 * @param context
	 * @param packageName
	 * @param name
	 *
	 */
	public Audio(Resources resources, String packageName, String name) {
		String logFileName = packageName + &quot; &quot; + name;
		Log.i(TAG, &quot;loading audio : &quot; + logFileName);

		ready = false;
		player = new MediaPlayer();

		try {
			this.id = resources.getIdentifier(name, &quot;raw&quot;, packageName);
			this.afd = resources.openRawResourceFd(id);

			Log.i(TAG, &quot;loading audio : &quot; + logFileName + &quot; id:&quot; + id);

			player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
			player.setLooping(false);
			player.prepare();

			// reset the player after completion
			player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
				public void onCompletion(MediaPlayer mp) {
					try {
						player.reset();
						player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
						player.prepare();
					} catch (Exception e) {
						Log.e(TAG, &quot;error resetting the media player&quot;);
						e.printStackTrace();
					}
				}
			});

			ready = true;

		} catch (Exception e) {
			Log.e(TAG, &quot;ERROR loading audio : &quot; + logFileName);
			e.printStackTrace();
		}
	}

	public void play() {
		if (ready) {
			player.start();
		} else {
			Log.i(TAG, &quot;the player is not ready.&quot;);
		}
	}

	public void setLooping(boolean b) {
		player.setLooping(b);
	}

	public void release() {
		player.stop();
		player.release();
	}

}
</pre>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/11/21/android-game-imagem-e-som/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>glaucon e a caverna &#8211; jogo do ld15</title>
		<link>http://www.athanazio.com/2009/09/13/glaucon-e-a-caverna-jogo-do-ld15/</link>
		<comments>http://www.athanazio.com/2009/09/13/glaucon-e-a-caverna-jogo-do-ld15/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 01:32:07 +0000</pubDate>
		<dc:creator>athanazio</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[caverna]]></category>
		<category><![CDATA[jogo]]></category>
		<category><![CDATA[zumbi]]></category>

		<guid isPermaLink="false">http://www.athanazio.com/2009/09/13/glaucon-e-a-caverna-jogo-do-ld15/</guid>
		<description><![CDATA[ld15-athanazio-v2 Olas esta eh a segunda versao com algumas melhorias do jogo que fiz para a competicao de 48 Ludum Dare #15. basta levar o Glaucon pela caverna, coletar os artefatos, evitar zumbis, e jogar tochas neles, tem 4 fases. divirta-se !!]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p><a href="http://www.athanazio.com/wp-content/uploads/2009/09/ld15-athanazio-v2.exe"><img class="alignnone size-medium wp-image-2000" title="glaucon and the cave" src="http://www.athanazio.com/wp-content/uploads/2009/02/glaucon-and-the-cave-398x300.jpg" alt="glaucon and the cave" width="398" height="300" /></a><br />
<a href="http://www.athanazio.com/wp-content/uploads/2009/09/ld15-athanazio-v2.exe">ld15-athanazio-v2</a><br />
Olas esta eh a segunda versao com algumas melhorias do jogo que fiz para a competicao de 48 Ludum Dare #15.</p>
<p>basta levar o Glaucon pela caverna, coletar os artefatos, evitar zumbis, e jogar tochas neles, tem 4 fases.</p>
<p>divirta-se !!</p>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.athanazio.com/2009/09/13/glaucon-e-a-caverna-jogo-do-ld15/feed/</wfw:commentRss>
		<slash:comments>1</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 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 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>

