[J2ME] Problemy z kompatybilnością

0

Witam,
Mam aplikację w MIDP 2, CLDC 1.1
Chodzi w emulatorze NetBeans, chodzi na LG k550 czy cos takiego, lecz na Nokii N95 8GB wyswietla tylko tlo, nie wyswietla tekstu i obrazkow. Działa tylko nawigowanie, mam ustawione ze jak nacisne 4 to wyjdzie i wychodzi z aplikacji.
W czym moze tkwić problem?

Pozdrawiam.

0

Krysztalowa kula mowi mi (a wiem ze i innym tez, bo rozmawialismy o tym w wiekszym gronie czarownikow) ze w 17 linijce midletu to rzutowanie bruzdzi, pozbadz sie go. A jak nie to, to juz nie mam pojecia, nie mam wiecej pomyslow.

0

rzutowania nie uzywam, uzywam tylko Integer.toString

0

Nie zrozumiales, wiec powiem tak abys zrozumial - nie jestesmy w stanie nic pomoc, poniewaz nie mamy pojecia co jest zle i co moze byc zle. Dlaczego? Nie pokazales kodu.

0
package gra;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.Random;


public class Pamiec extends MIDlet{
  private Display  display;
  private Nawigacja canvas;

  public Pamiec(){
    display = Display.getDisplay(this);
    canvas  = new Nawigacja(this);
  }
  protected void startApp(){
    display.setCurrent( canvas );
  }
  protected void pauseApp(){ }

  protected void destroyApp( boolean unconditional ){
    notifyDestroyed();
  }

  public void exitMIDlet(){
    destroyApp(true);
  }

} // czy inne klasy moga zawierac sie wew klasy glownej i co to powoduje?

class Nawigacja extends Canvas{ // klasa nawigujaca - menu wyboru

  private Pamiec midlet;

  private Display  display;
  private Gra canvas;

  private Image image;


    public Nawigacja(Pamiec midlet){

        this.midlet = midlet;

        // logo na poczatku
        try{
          image = Image.createImage("gra/logo.png");
        } catch (Exception ioe) {
          return;
        }

    }

    protected void paint(Graphics g){
        //tlo
        g.setColor(255, 255, 255);
        g.fillRect(0, 0, getWidth(), getHeight());

        //logo
        g.drawImage(image, getWidth()/5, getHeight()/8, Graphics.LEFT + Graphics.TOP);

        // menu gry
            g.setColor(0, 0, 0);
            g.drawString("[1] Rozpocznij gre", getWidth()/6, getHeight()/3, Graphics.TOP | Graphics.LEFT);
            g.drawString("[2] Instrukcja", getWidth()/6, (getHeight()/3)+20, Graphics.TOP | Graphics.LEFT);
            g.drawString("[3] Wyjdz", getWidth()/6, (getHeight()/3)+40, Graphics.TOP | Graphics.LEFT);
        
    }

    protected void keyPressed(int keyCode){

        if (keyCode == Canvas.KEY_NUM3) { midlet.exitMIDlet(); } // klawisz 4 - wyjscie
        if (keyCode == Canvas.KEY_NUM1) { // klawisz 1 rozpoczecie gry
            display = Display.getDisplay(midlet);
            canvas  = new Gra(midlet);
            display.setCurrent(canvas);
        }
        if (keyCode == Canvas.KEY_NUM2) { // klawisz 2 - intrukcja
        // przejscie do klasy z intrukcja
        }

        repaint();
      }

}


class Gra extends Canvas { // klasa losowania obrazkow i prezentowania ich uzytkownikowi

  
  private int ll = 0, kk = 0, dobre = 0, zle = 0;
  private Image image;
  private Image imgspr;

  private Display  display;
  private Nawigacja canvas;
  private Pamiec midlet;

  
  public int[] wylosowane = new int[10]; // tablica wylosowanych tablic
  public int[] wylosowanecyf = new int[10];
  public int[] wcisniete = new int[10];

  int stan = 0; // stan 0 - pokazywanie obrazkow, 1 - sprawdzanie pamieci, 2 - wynik(kliknij i menu glowne
  int zlicz = 0;
  
    public Gra(Pamiec midlet){ 

        this.midlet = midlet;

        //prezentacja
                // losowanie obrazkow
                Random number = new Random();
                int f, e, los = 1;
                for (int ej = 0; ej<10; ej++) {

                    f = number.nextInt(12);
                    e = number.nextInt(9);
                    // sprawdzanie powtorzen

                    wylosowane[ej] = f;
                    wylosowanecyf[ej] = e;
                    /*
                    for (int fj = 0; fj<10; fj++) {
                        if (wylosowane[fj] == f) {
                          los = 0;
                        }
                        if (los > 0) {
                            wylosowane[ej] = f;
                        } else {
                            ej=ej-1;
                        }

                    }

                     */
                }

                // wyswietlenie pierwszego obrazka
                if (ll == 0) {
                    try{
                      image = Image.createImage("gra/" + Integer.toString(wylosowane[0]) + ".png");
                    } catch (Exception ioe) {
                      return;
                    }
                }

        //sprawdzanie

                if (ll == 0) {

                    try{
                      imgspr = Image.createImage("gra/" + Integer.toString(wylosowane[0]) + ".png");
                    } catch (Exception ioe) {
                      return;
                    }

                }

    }

        protected void keyPressed(int keyCode){

            if (stan == 1) { //sprawdzanie

                    if (keyCode == Canvas.KEY_NUM0 || keyCode == Canvas.KEY_NUM1 || keyCode == Canvas.KEY_NUM2 || keyCode == Canvas.KEY_NUM3
                            || keyCode == Canvas.KEY_NUM4 || keyCode == KEY_NUM5 || keyCode == Canvas.KEY_NUM6 || keyCode == Canvas.KEY_NUM7
                            || keyCode == Canvas.KEY_NUM8 || keyCode == Canvas.KEY_NUM9) {
                    if (kk < 10) {
                    wcisniete[kk] = keyCode - 48;

                    kk = kk + 1;


                    try{
                      imgspr = Image.createImage("gra/" + wylosowane[kk] + ".png"); // Integer.toString(ll)
                    } catch (Exception ioe) {
                      return;
                    }
                    } else { repaint(); stan = 2; }

                    }

            }
            if (stan == 0) { //prezentacja

                    if (keyCode == Canvas.KEY_NUM5) { // po zapamietaniu klikamy 5 aby przejsc dalej

                    ll = ll + 1;

                    if (ll == 10) { stan=1; repaint(); }

                    try{
                      image = Image.createImage("gra/" + Integer.toString(wylosowane[ll]) + ".png"); // Integer.toString(ll)
                    } catch (Exception ioe) {
                      return;
                    }

                    }
            }
            if (stan == 2) { //wynik

               if (keyCode == Canvas.KEY_NUM5) {
                    display = Display.getDisplay(midlet);
                    canvas  = new Nawigacja(midlet);
                    display.setCurrent(canvas);
               }
            }
             
            repaint();

      }

    protected void paint(Graphics g){

        g.setColor(255, 255, 255);
        g.fillRect(0, 0, getWidth(), getHeight());


        if (stan == 0) { //prezentacja

                g.drawImage(image, getWidth()/8, getHeight()/3, Graphics.LEFT + Graphics.TOP);

                // sprawdzanie wylosowanych obrazkow
                for (int ejj = 0; ejj<10; ejj++) {
                    g.setColor(0, 0, 0);
                    g.drawString(Integer.toString(wylosowane[ejj]) + " - " + Integer.toString(wylosowanecyf[ejj]), getWidth()-150, getHeight()/5+(ejj*13), Graphics.TOP | Graphics.LEFT);
                }
                    // numer obrazka
                    g.setColor(0, 0, 0);
                    g.drawString(Integer.toString(wylosowanecyf[ll]), getWidth()-80, getHeight()/3, Graphics.TOP | Graphics.LEFT);
                    // obrazek do zapamietania
                    g.setColor(0, 0, 0);
                    g.drawString("[5] Nastepny slajd", 10, getHeight()-40, Graphics.TOP | Graphics.LEFT);


        }
        if (stan == 1) { //sprawdzanie

                g.drawImage(imgspr, getWidth()/8, getHeight()/3, Graphics.LEFT + Graphics.TOP);

                g.setColor(0, 0, 0);
                g.drawString("Wpisz odpowiedni numer", 10, getHeight()-40, Graphics.TOP | Graphics.LEFT);


        }

        if (stan == 2) { //wynik
                
                for (int ee = 0; ee<10; ee++){
                    if (wcisniete[ee] == wylosowanecyf[ee]) { dobre++; } else { zle++; }
                    //g.setColor(0, 0, 0);
                    //g.drawString(Integer.toString(wcisniete[ee]) + " =? " + Integer.toString(wylosowanecyf[ee]), 10, 10+(ee*10), Graphics.TOP | Graphics.LEFT);
                }
                     g.setColor(88, 148, 24);
                     g.drawString("Odpowiedzi poprawne: " + Integer.toString(dobre), 60, 60, Graphics.TOP | Graphics.LEFT);
                     g.setColor(228, 0, 0);
                     g.drawString("Odpowiedzi bledne: " + Integer.toString(zle), 60, 80, Graphics.TOP | Graphics.LEFT);
                     g.setColor(0, 0, 0);
                     g.drawString("[5] Menu glowne", 10, getHeight()-40, Graphics.TOP | Graphics.LEFT);

        }

    }
}

oto kod po wielu modyfikacjach

sprawe zdiagnozowalem, w momencie kiedy nie ma wyswietlanych zadnych obrazkow to tekst jest wyswietlany (NA NOKII) jak sa obrazki to nic sie nie wyswietla, lapie caly czas tylko biale tlo

0

Nokia nie korzysta z funkcji startApp, pauseApp itp.
Ma swoje funkcje o innych nazwach [???]

1 użytkowników online, w tym zalogowanych: 0, gości: 1