quarta-feira, 24 de março de 2010

jMonkeyEngine HelloWorld

Você está na série de posts sobre jMonkeyEngine. Acesse o post principal: jMonkeyEngine Tutorial

Vamos fazer um HelloWorld em 3 etapas: 1) Montar o ambiente 2) Codificar 3) Executar

1) Montar o ambiente

- Baixe o jMonkeyEngine e descompacte: Download
- Crie um novo projeto no eclipse (Eu uso o eclipse, mas se você quiser usar netbeans ou outra IDE também funcionará)
- Clique com botão direito no projeto > clique em "build path" > clique em "configure build path"
- vá na aba Libraries > clique em Add Externals JARs
- adicione todos os JARs que estiverem na lib da pasta do jMonkey que você descompactou e também os JARs que estiverem na pasta lwjgl dentro da pasta lib da pasta lib (sim, são duas pastas 'lib') da pasta do jMonkey
- Clique em OK

2) Codificar

- Crie uma classe chamada HelloWorld dentro da pasta src do seu projeto
- cole o seguinte código:

import com.jme.app.SimpleGame;
import com.jme.scene.shape.Teapot;

public class HelloWorld extends SimpleGame {

private Teapot teapot;

public static void main(String[] args) {
HelloWorld app = new HelloWorld();
app.setConfigShowMode(ConfigShowMode.AlwaysShow);
app.start();
}

protected void simpleInitGame() {
teapot = new Teapot("Teapot");
rootNode.attachChild(teapot);
}
}

resumindo, essa classe cria uma chaleira 3D (Teapot), explicarei mais detalhes nos próximos posts

3) Executar

- Clique com o botão direito na sua classe e clique em "Run As" e depois clique em "Java Application"
- Vai acontecer o erro: java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path

- Você precisa fazer o seguinte:

- Clique com o botão direito na sua classe e clique em "Run As" e depois clique em "Run Configurations"
- Clique na aba "Arguments" e no campo "VM Arguments" você vai colar o seguinte:
-Djava.library.path=[caminho para a pasta LWJGL dentro da pasta do jMonkey]/native/[seu sistema operacional]
- Aqui ficou assim:
-Djava.library.path=/home/adriano/temp/blog/jME2_0_1-Stable/lib/lib/lwjgl/native/linux
- Se você usa windows, ficará mais ou menos assim (talvez com as barras pro outro lado, não sei)
-Djava.library.path=C:\jmonkey\jME2_0_1-Stable\lib\lib\lwjgl\native\windows

- Clique em "Aplly" e depois em "Run"
- Aparecerá uma janela, desmaque a opção fullscreen e clique em OK

- PRONTO! mexa o mouse e as teclas A S D W para visualizar o outro lado da chaleira, qualquer coisa aperte ESC e rode novamente (botão direito > run as > java application)

teapot

Agora que você já fez esse HelloWorld, leia jMonkeyEngine HelloWorld II e faça um HelloWorld mias interessante!

jMonkeyEngine Introdução

Você está na série de posts sobre jMonkeyEngine. Acesse o post principal: jMonkeyEngine Tutorial

O que é o jMonkeyEngine?

jME ou jMonkeyEngine é uma game engine de alto nível e perfomance, open source, escrita em Java, baseada na API gráfica OpenGL.

Com jMonkeyEngine é possível desenvolver gráficos, cenários, jogos e animações, 2D e 3D, simples e complexos, com facilidade, praticidade e alta performance.

Veja alguns jogos e aplicações desenvolvidos com jME: (veja até o final, os melhores jogos estão no final)



Faça sua primeira aplicação com jMonkeyEngine! Acesse jMonkeyEngine HelloWorld

Vaaleu!!

terça-feira, 23 de março de 2010

jMonkeyEngine Tutorial

Seja bem-vindo à série de posts sobre jMonkeyEngine.

Introdução ao jMonkeyEngine: (O que é? O que dá pra fazer?)
http://localhost8080.blogspot.com/2010/03/jmonkeyengine-introducao.html

HelloWorld: (faça sua primeira aplicação!)
http://localhost8080.blogspot.com/2010/03/jmonkeyengine-helloworld.html

HelloWorld II (Vamos fazer um HelloWorld mais interessante!)
http://localhost8080.blogspot.com/2010/04/jmonkeyengine-helloworld-ii.html

Modelos 3D (bem bacana!)
http://localhost8080.blogspot.com/2010/04/jmonkeyengine-modelos-3d.html

Tenho o objetivo de postar muito mais sobre jMonkeyEngine! Fique sempre atento a esse blog para ler os novos posts!

Dúvidas comentem no post ou me enviem um e-mail: adriano@localhost8080.com.br
Vaaleu!

quinta-feira, 18 de março de 2010

compartilhamento de rede de usuário retornou erro 255: info_fn: file /var/lib/samba/usershares/ is not a well formed usershare

muitas vezes, no ubuntu, estou com muitas pastas compartilhadas e quero tirar todos os compartilhamentos e fazer isso um a um pode ser chato se existirem muitos compartilhamentos...

para deletar todos de uma vez basta deletar todos os arquivos (ou só os que você quiser) da pasta:

/var/lib/samba/usershares/

Isso também é útil caso aconteça o erro:

"compartilhamento de rede de usuário" retornou erro 255: info_fn: file /var/lib/samba/usershares/ is not a well formed usershare

isso deve acontecer pois alguma pasta que você compartilhou foi deletada e o compartilhamento continuou existindo : / então você deve ir na pasta /var/lib/samba/usershares/ e deletar os compartilhamentos problemáticos.

quarta-feira, 17 de março de 2010

byte array to image flex 2

No flex 3, se você tem um ByteArray de uma imagem, basta você passá-lo para o source do image que o bytearray vira uma imagem.

public var myByteArray:ByteArray;
<mx:Image source="{this.myByteArray}"/>

já no flex 2... não funciona!

aqui na empresa tem um projeto antigo que é em flex 2 e tive que fazer isso, tentei bastante mas não consegui fazer isso apenas no flex, então fiz o seguinte:

criei um servlet para escrever a imagem e o chamei a partir do source do mx:Image

//servlet
byte[] image = /*busca byte array no banco*/;
OutputStream out = response.getOutputStream();
out.write(image);
out.close();

//flex
<mx:Image source="{this.getContextPath() + '/showimage'}"/>

public function getContextPath():String
{
var url:String = Application.application.url;
var pos:int = url.lastIndexOf("/");
url = url.substring(0, pos);
return url;
}

mxml e o & (E comercial ou ampersand ou sinal tironiano)

Se você usar & (E comercial) em um mxml terá problemas... então use &amp; ao invés de &

por exemplo, se vai usar o operador AND (true && true), você terá que usar (true &amp;&amp; true)

domingo, 14 de março de 2010

Missing classpath entry default/lib/mail.jar

Olá, tenho sempre esse problema quando crio um novo servidor no eclipse... ele acontece pois o eclipse verifica se dentro do contexto do JBoss existe o arquivo mail.jar dentro da pasta lib, porém, se o seu contexto não se chamar 'default', esse problema ocorre...

para resolver é fácil, basta dentro da pasta 'server' dentro do seu jboss, criar uma pasta chamada 'default', dentro dela criar uma pasta chamada 'lib', e por fim, dentro da pasta lib é necessário criar um arquivo chamado mail.jar (pegue qualquer arquivo .jar, cole lá e renomeie, ou então crie um arquivo de texto 'texto.txt' e renomeie para 'mail.jar')

assim, você passa da validação e pode usar o seu contexto normamente!

Existe uma forma mais complexa para resolver isso (só continue lendo se os paragrafos anteriores não te satisfizeram)... dentro da pasta plugins da pasta do eclipse, existe uma pasta com nome mais ou menos assim 'org.eclipse.jst.server.generic.jboss_1.6.1.v200904151730', aí dentro tem uma pasta 'servers' com alguns xmls, neles ficam as validações para criação de um novo servidor no eclipse, alterando esse xmls da forma correta você nunca mais terá esse problema... você encontrará linhas como essas:

for validation to work this library is defined as an archive
exclude name="server/default/lib/mail.jar"

se estiver interessado em testar, exclua essas linhas e outras que possam inteferir, no momento estou sem tempo para ver isso mais a fundo, mas fica a dica.

Valeeu!

quinta-feira, 4 de março de 2010

documentar identar formatar flex

Aeww,

Existe um plugin para o eclipse que ajuda muito na hora de documentar, identar e/ou formatar o código flex... é o flexprettyprintcommand que pode ser baixado no link abaixo:
http://sourceforge.net/projects/flexformatter/files/

Se você quer documentar seu código flex você pode dar uma olhada nesse pdf que vai te ajudar um pouco também...
http://blog.dclick.com.br/wp-content/uploads/documentando-actionscript-e-mxml-v10.pdf

vaaleu!

ícones flex

Eu estava querendo customizar um radiobutton e colocar ícones diferentes quando o mouse estivesse em cima, quando estivesse selecionado, essas coisas... em Flex isso é muito fácil, basta usar as propriedades da tabela abaixo...

uma breve explicação...

* quando a propriedade começa com 'selected' (ex: selectedDownSkin) altera o ícone apenas se ele estiver selecionado, caso não começe (ex: downSkin) altera o ícone apenas se ele não estiver selecionado.

* quando termina com 'Skin' (ex: disabledSkin) ele não altera o ícone em si, e sim o plano de fundo, atrás do ícone, alterando o alpha você pode verificar isso, já se terminar com 'Icon' (ex: disabledIcon) ele altera o ícone mesmo.

* se tiver 'down' no nome (ex: downIcon) altera o ícone quando ele for clicado

* se tiver 'disabled' no nome (ex: disabledIcon) altera o ícone quando ele estiver desativado (enable = false)

* se tiver 'over' no nome (ex: selectedOverIcon) altera o ícone quando o mouse passar por cima

* se tiver 'up' no nome (ex: upSkin) altera o ícone quando o mouse não estiver sobre o ícone

PropriedadeApenas selecionadoAltera apenas o fundoMomento
disabledIconNãoNãoenable = false
disabledSkinNãoSimenable = false
downIconNãoNãocom o click do mouse em cima
downSkinNãoSimcom o click do mouse em cima
overIconNãoNãocom o mouse em cima
overSkinNãoSimcom o mouse em cima
upIconNãoNãosem o mouse em cima
upSkinNãoSimsem o mouse em cima
selectedDisabledIconSimNãoenable = false
selectedDisabledSkinSimSimenable = false
selectedDownIconSimNãocom o click do mouse em cima
selectedDownSkinSimSimcom o click do mouse em cima
selectedOverIconSimNãocom o mouse em cima
selectedOverSkinSimSimcom o mouse em cima
selectedUpIconSimNãosem o mouse em cima
selectedUpSkinSimSimsem o mouse em cima