Estou tendo problemas ao tentar carregar uma imagem, coloquei a mesma no diretorio raiz do meu projeto, o codigo abaixo eh o que esta dando problema, se alguem puder me ajudar eu agradeço !!!
import javax.microedition.midlet.;
import javax.microedition.lcdui.;
public class Principal extends MIDlet {
public Principal() {
}
protected void startApp()
throws MIDletStateChangeException {
Display display = Display.getDisplay( this );
display.setCurrent( new GameScreen() );
}
protected void destroyApp( boolean unconditional )
throws MIDletStateChangeException {
}
protected void pauseApp(){
}
}
/*
Maurílio ‘TK2000’ Silva
maurilio@screamsoft.com
Arcoverde-PE, 12/12/2004
Simples teste em J2ME
*/
class GameScreen extends Canvas implements Runnable {
// cria o objeto nave
Sprite nave = new Sprite( “iReport.png”, 0, 0);
// para o double buffering
Graphics buffer;
Image bufferImage;
// direcao da imagem
int imageDirection;
// cor do 'fundo’
int cor = 0xFFFFFF;
// construtor padra para nossa GameScreen class.
public GameScreen() {
// cria as imagens necessarias
System.out.println(“Passo 1”);
createImages();
System.out.println(“Passo 2”);
// posiciona a imagem
nave.x = getWidth()/2; // posicao x
nave.y = getHeight()/2;// posicao y
nave.w = nave.img.getWidth(); // largura
nave.h = nave.img.getHeight();// altura
System.out.println(“Passo 3”);
// cria um novo Thread e o inicia
new Thread( this ).start();
}
public void createImages() {
try {
// se o dispositivo não tem suporte automatico
// para double buffering
if( !isDoubleBuffered() ) {
// cria imagem offscreen
bufferImage = Image.createImage( getWidth(),
getHeight() );
buffer = bufferImage.getGraphics();
}
}
catch( Exception e ) {
e.printStackTrace();
}
}
public void run() {
while( true ) {
int loopDelay = 1000 / 15;
long loopStartTime = System.currentTimeMillis();
tick();
long loopEndTime = System.currentTimeMillis();
int loopTime = (int)(loopEndTime - loopStartTime);
if( loopTime < loopDelay )
{
try {
Thread.sleep( loopDelay - loopTime );
}
catch( Exception e ) {
}
}
}
}
// loop principal
public void tick() {
int myImageSpeed = 4;
int sW = this.getWidth();
int sH = this.getHeight();
int p = 10;
switch( imageDirection ) {
case LEFT:
if( nave.x > p)
nave.x -= myImageSpeed;
break;
case RIGHT:
if( nave.x < sW - p)
nave.x += myImageSpeed;
break;
case UP:
if( nave.y > p)
nave.y -= myImageSpeed;
break;
case DOWN:
if( nave.y < sH - p)
nave.y += myImageSpeed;
break;
}
repaint();
serviceRepaints();
}
protected void paint( Graphics g ) {
Graphics original = g;
if( !isDoubleBuffered() ) {
g = buffer;
}
g.setColor( cor );
g.fillRect( 0, 0, this.getWidth(), this.getHeight() );
g.drawImage( nave.img, nave.x, nave.y,
Graphics.VCENTER | Graphics.HCENTER);
if( !isDoubleBuffered() ) {
original.drawImage( bufferImage, 0, 0,
Graphics.TOP | Graphics.LEFT );
}
}
protected void keyPressed( int keyCode ) {
int gameAction = getGameAction( keyCode );
switch( gameAction ) {
case LEFT:
imageDirection = LEFT;
break;
case RIGHT:
imageDirection = RIGHT;
break;
case UP:
imageDirection = UP;
break;
case DOWN:
imageDirection = DOWN;
break;
case FIRE:
cor = (cor==0xFFFFFF)?0x2857B6:0xFFFFFF;
break;
}
}
protected void keyReleased( int keyCode ) {
imageDirection = 0;
}
}
class Sprite {
public Image img; // imagem
public int x, y, z; // coordenadas X,Y,Z do objeto
public int w, h; // largura e altura
public boolean vis; // visivel
/**
- Inicializa um objeto Sprite fornecendo alguns dos
- paramentros necessarios<br>
- Onde:<br>
- img -> imagem a ser carregada<br>
- x -> coordenada X<br>
- y -> coordenada Y<br>
**/
public Sprite( String nome, int x, int y) {
try {
this.img = Image.createImage( nome);
}
catch( Exception e ) {
System.out.println(“Erro ao usar create Image”);
e.printStackTrace();
this.img = null;
}
this.x = x;
this.y = y;
this.z = 0;
this.w = 0;
this.h = 0;
this.vis = false;
}
}