[RESOLVIDO]Aplicativo com Imagem inicia somente no Emulador

Estou estudando J2ME e o MIDP 2.0.

Todas aplicações que fasso que contenham imagem acaba não iniciando(No emulador JWTK funciona corretamente).

Sendo que já verifiquei a existencia da imagem dentro do jar, e o correto nome do arquivo.

Como mencionei anteriormente, funciona CORRETAMENTE no Emulador do JWTK, mas no BUILD (bin/MeuArquivo.jad) e no celular não iniciam.

[quote=Hellmanss]Estou estudando J2ME e o MIDP 2.0.

Todas aplicações que fasso que contenham imagem acaba não iniciando(No emulador JWTK funciona corretamente).

Sendo que já verifiquei a existencia da imagem dentro do jar, e o correto nome do arquivo.

Como mencionei anteriormente, funciona CORRETAMENTE no Emulador do JWTK, mas no BUILD (bin/MeuArquivo.jad) e no celular não iniciam.[/quote]

Sua dúvida é uma das mais respondidas aqui. Use a função busca. grato.

¬¬’

Caro amigo, já li mais de 20 posts aqui e não encontrei o mesmo problema.

de nada ¬¬’

Qual o tamanho da imagem em bytes? Pode ser que ela esteja um pouco grande.

Tenho 3 imagens 980 bytes cada +/-

As 3 são .PNG

[quote=Hellmanss]Tenho 3 imagens 980 bytes cada +/-

As 3 são .PNG
[/quote]

Como eu disse, a maior parte dos problemas está na má especificação do path no código-fonte e sobre isto tem vários posts no fórum.

Fiz alguns outros testes aqui e verifiquei que o erro ocorre quando eu adiciono mais de uma Imagem(comentario linha 53).

Mesmo assim não sei pq está ocorrendo…

Segue a classe teste que eu fiz:

[code]
import java.io.IOException;

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
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;

public class CanvasExemple extends MIDlet {
GameCanvas myCanvas;

public CanvasExemple() {
	myCanvas = new MyCanvas2();
}

public void startApp() {
	Display display = Display.getDisplay(this);

	display.setCurrent(myCanvas);

	myCanvas.repaint();
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

}

class MyCanvas2 extends GameCanvas {

protected MyCanvas2() {
	super(true);
}

private LayerManager manager;
private Image backGroundImg;


public void paint(Graphics g) {

	g.setColor(0xffffff);
	g.fillRect(0, 0, getWidth(), getHeight());
	g.setColor(0x000000); // make sure it is black

	g.fillRect(x, y, 20, 20);
	
	Image image = null;
	try {
		      //com isto comentado o Sprite poppula normalmente, mas quando tento criar mais de uma imagem, o aplicativo nao inicia.

// backGroundImg = Image.createImage("/tiledlayer1.PNG");

		image = Image.createImage("/smile.PNG");
		Sprite sprite =  new Sprite(image);
		
		sprite.setPosition(x, y);
		
		manager = new LayerManager();
		manager.insert(sprite,0);
		
		manager.paint(g, 0, 0);
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}


private int x = getWidth() / 2 - 10;
private int y = getHeight() / 2 - 10;

private int dx = 2;
private int dy = 2;

}[/code]

[quote=Hellmanss]Fiz alguns outros testes aqui e verifiquei que o erro ocorre quando eu adiciono mais de uma Imagem(comentario linha 53).

Mesmo assim não sei pq está ocorrendo…

Segue a classe teste que eu fiz:

[code]
Image image = null;
try {
//com isto comentado o Sprite poppula normalmente, mas quando tento criar mais de uma imagem, o aplicativo nao inicia.
// backGroundImg = Image.createImage("/tiledlayer1.PNG");

		image = Image.createImage("/smile.PNG");
		Sprite sprite =  new Sprite(image);

}[/code][/quote]

Aparentemente o código está ok, no entanto acho desperdício vc instanciar a mesma imagem estática (arquivo) mais de uma vez, afinal o Paint é chamado múltiplas vezes. O certo seria este createImage estar sendo executado fora do Paint, portanto apenas 1 vez. Não vi motivo para vc fazer como está e já experimentou fazer do jeito q sugeri ? Já verificou se o tiledLayer1.PNG está no JAR e se é um arquivo válido (não-corrompido) ?

Essa classe eu fiz apenas para testar o problema diretamente. Em minha implementação, carrego-os apenas no construtor.

Segue o Codigo Fonte e os arquivos JAD/JAR ja compilado.

Edit: Resolvido

Depois de fazer muitos testes, acabei descobrindo que o problema estava na imagem “tiledLayer1.PNG”

Eu refiz todas as imagens uma a uma, e funcionou quando a imagem do tiledLayer foi refeita. Eu a tinha pego na net(burro :lol: )…

Boone, obrigado pela atenção.