Java
210 pág.

Java


DisciplinaProgramação Orientada A Objetos3.889 materiais57.128 seguidores
Pré-visualização43 páginas
while(!gameOver){
 try {
 meuGrafico3D.bindTarget(meuGrafico);
 meuGrafico3D.render(meuMundo);
 meuThread.sleep(50);
 } catch (Exception minhaExcecao) {
 minhaExcecao.printStackTrance)();
 } finally {
 meuGrafico3D.releaseTarget();
 flushGraphics();
 }
 }
 }
}
Primeira aplicação
Neste artigo você irá aprender a criar a sua primeira classe para J2ME.
Importando
Para começarmos a fazer a nossa primeira aplicação (midlet) em J2ME vamos primeiramente importar a classe
MIDlet para o nosso projeto.
import javax.microedition.midlet.*;
Criando a classe
Agora iremos criar a classe principal da nossa aplicação, ela irá extender a classe MIDlet, lembrando que o nome da
classe sempre deverá ser o mesmo do arquivo .java.
import javax.microedition.midlet.*;
public class MinhaClasse extends MIDlet {
}
Métodos padrões
O ciclo de vida de uma aplicação para celular é sempre composta por 3 métodos startApp(), pauseApp() e
destroyApp(boolean unconditional), vamos inseri-los dentro da nossa classe.
import javax.microedition.midlet.*;
public class MinhaClasse extends MIDlet {
 public void startApp() {
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
J2ME 137
 }
}
O método startApp() funciona como o método main() no J2SE, ou seja, todas as instruções de execução ficarão
dentro dele. Você também deve especificar o nome da MIDlet que contém os métodos de execução nas propriedades
do projeto.
Execução dos métodos
Vamos agora mostrar a execução dos métodos através do console, para isso iremos usar normalmente o
System.out.println() do pacote padrão do Java.
import javax.microedition.midlet.*;
public class MinhaClasse extends MIDlet {
 public void startApp() {
 System.out.println("Executando startApp");
 }
 public void pauseApp() {
 System.out.println("Executando pauseApp");
 }
 public void destroyApp(boolean unconditional) {
 System.out.println("Executando destroyApp");
 }
}
Você deve ter notado que foram executados apenas os métodos startApp() e destroyApp(), o pauseApp() não foi
executado porque precisa de uma chamada especial para ser feita, como por exemplo uma ligação que o celular
recebe enquanto o aplicativo está rodando.
Display
O objeto Display é o controlador do que é mostrado no dispositivo, ele está dentro do pacote
javax.microedition.lcdui.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet {
 Display meuDisplay;
 public void startApp() {
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
}
Para criar fisicamente o objeto vamos chamar o método estático getDisplay().
J2ME 138
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet {
 Display meuDisplay = Display.getDisplay(this);
 public void startApp() {
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
}
Olá mundo
Fizemos várias coisas no projeto do programa, mas ainda não exibimos nada na tela, agora é a hora, nós vamos
exibir a mensagem em um Form que é fácil de implementar, primeiro vamos instanciar o objeto Form.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet {
 Display meuDisplay = Display.getDisplay(this);
 Form meuForm;
 public void startApp() {
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
}
Agora vamos dar atributos ao objeto meuForm, nesse caso ele só tem um atributo que é a String de texto que será
exibida na tela.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet {
 Display meuDisplay = Display.getDisplay(this);
 Form meuForm = new Form("Título do Form. Olá mundo!");
 public void startApp() {
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
J2ME 139
}
Agora finalmente vamos exibir a mensagem na tela, para isso dentro do método startApp vamos colocar o objeto
display, chamar o seu método setCurrent(), e colocar como atributo o objeto da classe Form.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MinhaClasse extends MIDlet {
 Display meuDisplay = Display.getDisplay(this);
 Form meuForm = new Form("Título do Form. Olá mundo!");
 public void startApp() {
 meuDisplay.setCurrent(meuForm);
 }
 public void pauseApp() {
 }
 public void destroyApp(boolean unconditional) {
 }
}
Redes
Vamos agora ver como trabalhar com redes para troca de dados no J2ME, podemos trabalhar com conexões de
HTTP, Socket e Datagram. Para rodar os exemplos precisaremos na maioria dos casos de 2 midlets rodando ao
mesmo tempo, e também precisaremos implementar loops que irão checar a chegada de novas informações.
Para iniciar, podemos usar normalmente a classe que criamos do GameCanvas e importando o pacote
javax.microedition.io.
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
public class MeuGameCanvas extends GameCanvas implements Runnable {
 Thread meuThread;
 public MeuGameCanvas(){
 super(false);
 meuThread = new Thread(this);
 meuThread.start();
 }
 public void run(){
 boolean fim = false;
 while(fim == false){
 flushGraphics();
 }
 }
}
J2ME 140
Primeiramente dentro do run() vamos instanciar um objeto do tipo Connector, vamos também inicia-lo com
conteúdo vazio (null).
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
public class MeuGameCanvas extends GameCanvas implements Runnable {
 Thread meuThread;
 public MeuGameCanvas(){
 super(false);
 meuThread = new Thread(this);
 meuThread.start();
 }
 public void run(){
 Connection meuConnection = null;
 boolean fim = false;
 while(fim == false){
 flushGraphics();
 }
 }
}
Criando arquivos M3G no Blender
Neste tutorial vamos ver como criar um arquivo .m3g utilizando o Blender, um software gratuito de modelagem 3D.
O programa
Você pode baixar e instalar gratuitamente a versão completa do Blender em seu site oficial www.blender.org [5].
Blender Export for J2ME
A partir da versão 2.48 o Blender passou a vir com um exportador para o J2ME, para exportar seu objeto clique File
-> Export -> M3G (.m3g, java) -> OK. Aparecerá uma janela com os seguintes atributos:
\u2022\u2022 Texturing
\u2022\u2022 Enabled - Permite a exportação de texturas
\u2022\u2022 External - Referencia arquivos externos para texturas
\u2022\u2022 Lightning
\u2022\u2022 Enabled - Permite a exportação de luz
\u2022\u2022 Ambient Light - Insere um objeto de luz extra para luz ambiente
\u2022\u2022 Mesh Options
\u2022\u2022 Autoscalling - Usa precisão máxima para posição de vértices
\u2022\u2022 Persp. Correcti - Coloca uma flag de correção de perspectiva
\u2022\u2022 Smooth Shading - Coloca uma flag de sombreamento suave
\u2022\u2022 Posing
\u2022\u2022 All Armature Ac - Exporta todas as ações para armaduras
J2ME 141
\u2022\u2022 Export
\u2022\u2022 As Java Source - Exporta a cena como um código fonte em Java
\u2022\u2022 M3G Version 2.0 - Arquivo M3G versão 2.0
\u2022\u2022 Game Physics - Inclui informações de física de jogo para NOPE na exportação
\u2022\u2022 O3D As JS - Gera um código em HTML