2D-Grafik Bilder laden ist nicht zuverlässig

  • Themenstarter Themenstarter HybridCraft
  • Beginndatum Beginndatum
H

HybridCraft

Gast
Zurzeit habe ich einen apple(auf dem auch windows xp installiert ist) und dort drauf programmiere ich mit eclispe
Mein problem:
1 von 5 Malen ladet das bild "Splash" und eigentlich sollte es immer machen?
Und andere sagen beim void Run gehen nicht
Wenn es anfang=false ist, dann geht es nicht durch den nochmale schleife??








link:
https://github.com/ritonda66/shooter/blob/master/src/ch/shooter/gamePanel.java
P.S es sind 2 klassen in der datei(eigentlich sind sie nicht zusammen, sondern in einzelnen dateien)
 
Das klingt ja nach so schlechtem deutsch, dass ich hier einen Übersetzer vermute. Leider werde ich aus dem Text nicht wirklich schlau...
 
Der Inhalt deines Konstruktors ist ein bisschen merkwürdig.

[JAVA=144] public gamePanel(int w, int h) {
this.setPreferredSize(new Dimension(w, h));
frame.setDefaultLookAndFeelDecorated(true);
frame = new JFrame("Enten shooter " + version);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
addMouseListener(this);
addKeyListener(this);
frame.setFocusable(true);
frame.requestFocus();
frame.addKeyListener(this);

// Cursor
// Cursor newCursor = new Cursor(Cursor.CROSSHAIR_CURSOR);
// setCursor(newCursor);
doInit();
th.start();
}[/code]
In Zeile 146 müsste eine NullPointerException fliegen. Der Aufruf ist sowieso sinnlos, da du den Frame danach neu setzt. Allgemein einen JFrame im Konstruktor eines JPanel zu erstellen, halte ich für keine so gute Idee. Warum zum Teufel sind die Variablen alle static? :autsch:
Das Problem ist jedenfalls der verfrühte Aufruf von
Code:
setVisible(true)
in Zeile 152. Der Frame wird sichtbar, bevor du die Bilder über
Code:
doInit()
(Zeile 162) geladen hast. Daher ist es kein Wunder, dass sie nicht angezeigt werden.
 
[EDIT]
Ach xehpuk ... naja, immerhin zweiter! ;-)
[/EDIT]

Mein ernstgemeinter Rat: Erst einmal klein anfangen und sauber programmieren lernen, so ein Codewirrwarr wird im Endeffekt mehr Probleme und Ungereimtheiten aufwerfen als das Ganze nochmal zu machen. Allein schon das alles
Code:
public static
ist...

Folgender Codeausschnitt müsste jedoch mit dem konkreten Problem zusammenhängen:
Java:
public gamePanel(int w, int h) {
this.setPreferredSize(new Dimension(w, h));
frame.setDefaultLookAndFeelDecorated(true);
frame = new JFrame("Enten shooter " + version);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
addMouseListener(this);
addKeyListener(this);
frame.setFocusable(true);
frame.requestFocus();
frame.addKeyListener(this);

// Cursor
// Cursor newCursor = new Cursor(Cursor.CROSSHAIR_CURSOR);
// setCursor(newCursor);
doInit();
th.start();
}
In Zeile 9 wird der Frame angezeigt (
Code:
setVisible()
), in Zeile 19 wird jedoch erst das Splash-Bild geladen. Ferner solltest du die IOExceptions nicht einfach ignorieren. Vielleicht kommt hier ja der Hinweis rüber (z.B. FileNotFound)?
 

Zurück
Oben