Erro ao chamar tela de game over

Por favor se alguem puder ajudar serei muito grato…
gostaria q alguem descobrisse o que está errado no meu código…
pq ele não chama a tela de game over qdo solicito??..
sempre que o sprite “morre” ao inves de chamar o game over ele trava…
tô colocando ai o code… desde já obrigado… abrass…

public class MIDletZag extends MIDlet implements CommandListener{
    
    public Command sair ,pausar, reiniciar, ok, inserir;
    private ZagCanvas gameCanvas;
    private Menu menu;
    private GameOver gameOver;
    private Display screen;
    public static MIDletZag ZagMid;

    public void startApp(){

        pausar = new Command("Pausar",Command.STOP,1);
        sair = new Command("Sair",Command.EXIT,0);
        reiniciar = new Command("Reiniciar", Command.BACK,1);
        ok = new Command("OK", Command.OK,1);
        inserir = new Command("Inserir", Command.OK,1);

        gameCanvas = new ZagCanvas();
        gameCanvas.addCommand(sair);
        gameCanvas.setCommandListener(this);

        MIDletZag.ZagMid = this;

        menu = new Menu(this);
        menu.addCommand(sair);
        menu.setCommandListener(this);

        SplashScreen();
                
    }
        
    
    public void pauseApp() {
        
    }
    
    public void destroyApp(boolean unconditional) {
        this.notifyDestroyed();
        System.gc();

   }
    
    public ZagCanvas gameCanvas(){
        return gameCanvas;
    }
    
    public void SplashScreen(){
        screen = Display.getDisplay(this);        
        new SplashScreen(screen, menu);
    }
    
    public Menu getMenu(){
        return menu;
    }
    
    public void GameOver() {
            gameCanvas.stop();
            destroyApp(true);        
            screen = Display.getDisplay(this);            
            new GameOver(screen, menu);
    }    

    public void commandAction(Command arg0, Displayable arg1) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
////trecho que o metodo eh chamado no canvas////
                            if(morrendo){
                                
                                    
                                    this.SptZagAnimator.setMoving(true);
                                    this.SptZag.setFrameSequence(ObZag.ZagMorrendo);
                                    caindo = true;

                                    CountDown count = new CountDown();
                                    timer.schedule(count, 5000);
                                    
                                    midlet.GameOver();
                                    

                            }
//////////////////////////////
import java.io.IOException;
import java.util.*;
import javax.microedition.lcdui.*;

public class GameOver extends Canvas {

    private Display display;
    private Displayable next;
    private Image img = null;
    private Timer timer = new Timer();
    
    private ZagCanvas gameCanvas;
    private MIDletZag midlet;
    
    protected int _width;
    protected int _height;

 
    public GameOver(Display display, Displayable next){
        this._width = this.getWidth();
        this._height = this.getHeight();
        this.display = display;
        this.next = next;
        display.setCurrent(this);
    }

    protected void keyPressed(int keyCode){
        dismiss();
    }

    protected void paint(Graphics g){
        try {
            g.setColor(0xffffff);            
            g.fillRect(0, 0, _width, _height);
            img = Image.createImage("/GameOver.png");
            g.drawImage(img, 240, 240, Graphics.RIGHT | Graphics.BOTTOM);
        } catch (IOException ex){
            System.out.println("Sem Apresentação"+ex.toString());
        }
    }

    protected void pointerPressed(int x, int y){
        dismiss();
    }

    protected void showNotify(){
        timer.schedule(new CountDown(), 4000);
    }

    private void dismiss(){
        timer.cancel();
        display.setCurrent(next);
    }

    private class CountDown extends TimerTask {
        public void run(){
            dismiss();
        }
    }
}

[quote=J.Isaac]Por favor se alguem puder ajudar serei muito grato…
gostaria q alguem descobrisse o que está errado no meu código…
pq ele não chama a tela de game over qdo solicito??..
sempre que o sprite “morre” ao inves de chamar o game over ele trava…
tô colocando ai o code… desde já obrigado… abrass…

public class MIDletZag extends MIDlet implements CommandListener{
    
    public Command sair ,pausar, reiniciar, ok, inserir;
    private ZagCanvas gameCanvas;
    private Menu menu;
    private GameOver gameOver;
    private Display screen;
    public static MIDletZag ZagMid;

    public void startApp(){

        pausar = new Command("Pausar",Command.STOP,1);
        sair = new Command("Sair",Command.EXIT,0);
        reiniciar = new Command("Reiniciar", Command.BACK,1);
        ok = new Command("OK", Command.OK,1);
        inserir = new Command("Inserir", Command.OK,1);

        gameCanvas = new ZagCanvas();
        gameCanvas.addCommand(sair);
        gameCanvas.setCommandListener(this);

        MIDletZag.ZagMid = this;

        menu = new Menu(this);
        menu.addCommand(sair);
        menu.setCommandListener(this);

        SplashScreen();
                
    }
        
    
    public void pauseApp() {
        
    }
    
    public void destroyApp(boolean unconditional) {
        this.notifyDestroyed();
        System.gc();

   }
    
    public ZagCanvas gameCanvas(){
        return gameCanvas;
    }
    
    public void SplashScreen(){
        screen = Display.getDisplay(this);        
        new SplashScreen(screen, menu);
    }
    
    public Menu getMenu(){
        return menu;
    }
    
    public void GameOver() {
            gameCanvas.stop();
            destroyApp(true);        
            screen = Display.getDisplay(this);            
            new GameOver(screen, menu);
    }    

    public void commandAction(Command arg0, Displayable arg1) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
////trecho que o metodo eh chamado no canvas////
                            if(morrendo){
                                
                                    
                                    this.SptZagAnimator.setMoving(true);
                                    this.SptZag.setFrameSequence(ObZag.ZagMorrendo);
                                    caindo = true;

                                    CountDown count = new CountDown();
                                    timer.schedule(count, 5000);
                                    
                                    midlet.GameOver();
                                    

                            }
//////////////////////////////
import java.io.IOException;
import java.util.*;
import javax.microedition.lcdui.*;

public class GameOver extends Canvas {

    private Display display;
    private Displayable next;
    private Image img = null;
    private Timer timer = new Timer();
    
    private ZagCanvas gameCanvas;
    private MIDletZag midlet;
    
    protected int _width;
    protected int _height;

 
    public GameOver(Display display, Displayable next){
        this._width = this.getWidth();
        this._height = this.getHeight();
        this.display = display;
        this.next = next;
        display.setCurrent(this);
    }

    protected void keyPressed(int keyCode){
        dismiss();
    }

    protected void paint(Graphics g){
        try {
            g.setColor(0xffffff);            
            g.fillRect(0, 0, _width, _height);
            img = Image.createImage("/GameOver.png");
            g.drawImage(img, 240, 240, Graphics.RIGHT | Graphics.BOTTOM);
        } catch (IOException ex){
            System.out.println("Sem Apresentação"+ex.toString());
        }
    }

    protected void pointerPressed(int x, int y){
        dismiss();
    }

    protected void showNotify(){
        timer.schedule(new CountDown(), 4000);
    }

    private void dismiss(){
        timer.cancel();
        display.setCurrent(next);
    }

    private class CountDown extends TimerTask {
        public void run(){
            dismiss();
        }
    }
}

[/quote]

Qual parte que representa o fim do jogo???

é intenção é a seguinte arthur… eu chamo a classe GameOver nessa classe tem a imagem gamOver.png, que deveria aparecer na tela e não aparece… pois bem… a intenção é chamar essa classe por 4 segundos depois cair no menu inicial novamente…

então Isac vc tem que criar um objeto Image, iniciando ele la no startApp… e pra fazer o que vc quer de mostrar por um tempo tenta mostar o Image em um Alert

[code] Image im = null;
try {
im = Image.createImage("/nome.PNG");
} catch (Exception e) {

        }
img = new ImageItem("Nome", im, ImageItem.LAYOUT_CENTER, null);

[/code]

E o Alert

e depois tem varios métodos pra você configurar tempo de exibição(setTimeOut() ) é só dar uma olhada

espero ter ajudado

Ia me esquecendo… se seu projeto tiver uma pasta chamada res, salve seu arquivo .png nela

arthur… mas como eu mostro essa imagem depois q eu matar o canvas?.. como eu chamo ela… ? vlw

Uma coisa estranha é que destroyApp esta notificando o desejo de sair da aplicacao antes de criar o objeto GameOVer. Tente remover a linha que chama destroyApp no metodo GameOver.

cara removi… continua travando hora q eu chamo o objeto GameOver…

poxa, se vc não instanciou a imagem no startapp ACHO q não vai conseguir, tudo que vc for usar no aplicativo tem ser inicializado ou no construtor(quando deseja salvar o estado jogo no caso de pause) ou no startApp(vai inicializar toda vez da maneira q vc setou)

mas arthur eu tenho aqui uma classe splahScreen…
tenho uma imagem dentro dela… que sempre aparece antes de entrar no menu do jogo… i a imagem não tá sendo inicializada no startApp… ela é manipulada dentro da classe splashScreen…

tipo vc só aloca mémoria para um objeto splashScreen dentro do método com o mesmo nome… e esse método está sendo chamado dentro de startApp

ok… mas num daria pra eu fazer a mesma coisa com o gameOver???