A saga do Splash screen continua

2 respostas
N

Minha imagem não aparece. Alguém aí pode ensinar como corrigir?

import java.util.*;
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class SplashScreen extends GameCanvas {
   
   private Display display;
   private Displayable next;
   private Timer timer = new Timer();
   
   /** Creates a new instance of SplashScreen */
   public SplashScreen(Display display, Displayable next) {
      super(true);
      this.display = display;
      this.next = next;
      display.setCurrent(this);
   }
    
   protected void keyPressed(int keyCode) {
      dismiss();    
   }
      
   protected void pointerPressed(int x, int y) {     
      dismiss();                                  
   }

   protected void showNotify() {
      // Chamado automaticamente quando Canvas é colocado na tela.
      timer.schedule(new CountDown(), 5000);
      // CountDown iniciado após 5 segundos.
   }
   
   private void dismiss() {
      timer.cancel();
      display.setCurrent(next);
   }
   
   private class CountDown extends TimerTask {
      public void run() {
         Graphics g = getGraphics();
         try {
            desenharTela(g);
         }
         catch(IOException ioe) {
         }
         dismiss();    
      }    
   }
   
   private void desenharTela(Graphics g) throws IOException {
      
      Image imagem;
      Sprite sprite;
      LayerManager layer = new LayerManager();
      imagem = Image.createImage("/splash.PNG");  
      sprite = new Sprite(imagem, 128, 110);
      layer.append(sprite);
      layer.setViewWindow(1, 1, 128, 110);
      layer.paint(g, 0, 0);
      flushGraphics();
      
   }
}

MIDlet.

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class MidletClass extends MIDlet {
    
   private Display display;
    
   public void startApp() throws MIDletStateChangeException {
   
      if(display == null) {
         // Primeira vez que MIDlet foi chamado.
            iniciarMIDlet();   
      }
      
   }
   
   private void iniciarMIDlet() {
      
      display = Display.getDisplay(this);    
      try {
         GameCanvasClass gcc = new GameCanvasClass();
         new SplashScreen(display, gcc);
         gcc.start();
      }
      catch(Exception e) {
      }
      
   }
   
   public Display getDisplay() {
      return getDisplay();    
   }
    
   public void pauseApp() {
   }
    
   public void destroyApp(boolean unconditional) {
      sair();
   }

   public void sair() {
      System.gc();
      destroyApp(true);
      notifyDestroyed();
   }

}

2 Respostas

M

Você deve implementar e chamar paint() não desenha…
Algo como:

public void paint(Graphics g) { try{ Image imagem; imagem = Image.createImage("/splash.PNG"); g.setClip(0, 0, 176, 220); g.drawImage(imagem , 88, 110, raphics.HCENTER|Graphics.VCENTER); } catch(IOException e){} }

C

Por favor, não carregue a imagem no método que será iterado!
Carregue uma vez só e apenas pinte dentro do método paint.

Até mais!

Veja se não está lançando excessão ao carregar a imagem.
Faz um try/catch no carregamento dela com system.out no catch.

Até mais!

Criado 9 de janeiro de 2007
Ultima resposta 9 de jan. de 2007
Respostas 2
Participantes 3