[RESOLVIDO]Aplicativo com Imagem inicia somente no Emulador

8 respostas
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.

8 Respostas

P

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.

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

Hellmanss

¬¬’

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

de nada ¬¬’

JavaES

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

Hellmanss

Tenho 3 imagens 980 bytes cada +/-

As 3 são .PNG

P

Hellmanss:
Tenho 3 imagens 980 bytes cada +/-

As 3 são .PNG

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.

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:

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;
}
P
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:

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);
}

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) ?

Hellmanss

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.

Criado 6 de agosto de 2009
Ultima resposta 6 de ago. de 2009
Respostas 8
Participantes 3