Ola pessoal,
não estou conseguindo fazer com que os eventos das teclas funcionem. podem me ajudar
import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;
public class RPGCanvas extends GameCanvas implements Runnable{
Thread t;
Graphics g = getGraphics();
Sprite personagem,personagemCima,personagemBaixo,personagemDireita,personagemEsquerda,dragao;
TiledLayer fundo;
int posX = 80;
int posY = 100;
LayerManager lm;
public RPGCanvas() {
super(true);
try {
dragao = new Sprite(Image.createImage("/dragao.PNG"),32,39);
personagem = new Sprite(Image.createImage("/personagem.PNG"),24,28);
personagemCima = new Sprite(Image.createImage("/moveCima.PNG"),24,28);
personagemBaixo = new Sprite(Image.createImage("/moveBaixo.PNG"),24,28);
personagemDireita = new Sprite(Image.createImage("/moveDireita.PNG"),24,28);
personagemEsquerda = new Sprite(Image.createImage("/moveEsquerda.PNG"),24,28);
}catch (IOException e){
System.out.println("Imagem nao carregada");
}
t = new Thread(this);
t.start();
}
private void montarMapa(){
int colunasMatriz = 11;
int linhasMatriz = 11;
int larguraFigura = 16;
int alturaFigura = 16;
int cenario[][] = {
{1,1,1,1,1,1,1,1,1,1,1},
{1,2,2,2,2,2,2,2,2,2,1},
{1,2,2,2,2,2,2,2,2,2,1},
{1,2,2,2,2,2,2,2,2,2,1},
{1,2,2,2,2,2,2,2,2,2,1},
{1,2,2,2,2,2,2,2,2,2,1},
{1,2,2,2,2,2,2,2,2,2,1},
{1,2,2,2,2,2,2,2,2,2,1},
{1,2,2,2,2,2,2,2,2,2,1},
{1,2,2,2,2,2,2,2,2,2,1},
{1,1,1,1,1,1,1,1,1,1,1}};
try{
Image imagem = Image.createImage("/mapa.png");
fundo = new TiledLayer(colunasMatriz,linhasMatriz,imagem,larguraFigura,alturaFigura);
for(int i=0; i < linhasMatriz; i++){
for(int j=0; j < colunasMatriz; j++){
fundo.setCell(j, i, cenario[i][j]);
}
}
}catch(IOException e){
System.out.println("Imagem nao encontrada");
}
}
private void colidir(){
if(personagem.collidesWith(dragao, true)){
System.out.println("colidiu");
posY-=5;
}
}
private void eventosTeclado() {
int key = getKeyStates();
if(key==0){
personagem.setFrame(1);
}
if ((key & LEFT_PRESSED) != 0){
personagem = personagemEsquerda;
posX-=5;
if(personagem.getFrame()==0){
personagem.nextFrame();
}
personagem.nextFrame();
if(posX==10){
posX+=5;
}
}
else if((key & RIGHT_PRESSED) != 0){
personagem = personagemDireita;
posX+=5;
if(personagem.getFrame()==0){
personagem.nextFrame();
}
personagem.nextFrame();
if(posX==140){
posX-=5;
}
}
else if((key & UP_PRESSED) != 0){
personagem = personagemCima;
posY-=5;
if(personagem.getFrame()==0){
personagem.nextFrame();
}
personagem.nextFrame();
if(posY==10){
posY+=5;
}
}
else if((key & DOWN_PRESSED) != 0){
personagem = personagemBaixo;
posY+=5;
if(personagem.getFrame()==0){
personagem.nextFrame();
}
personagem.nextFrame();
if(posY==135){
posY-=5;
}
}
}
public void run() {
montarMapa();
lm = new LayerManager();
lm.append(personagem);
lm.append(fundo);
while(true){
eventosTeclado();
try {
lm.paint(g, 0, 0);
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}