O
Otzelot
Gast
Hallo zusammen,
erstmal sei gesagt ich bin ganz frisch im Programmieren mit Swing. Ich wollte mir ein kleinen Spiel bauen. Ich hab jetzt bereits eine Figur die auf Blöcke springen kann und auch sich dort so verhält, wie ich das will.
Ein Problem ist, dass ich nach 2 oder 3 maligem hinzufügen von Blöcken immer "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException" erhalte. Es wird dabei immer auf meine Zeile g.paintImage(....); verwiesen.
Jetzt mal zu meine Frage: Kann es sein, dass es daran liegt, dass das Image noch nicht richtig geladen ist? Weil der Fehler tritt immer nur bei mehreren Blöcken auf und nicht wenn ich nur 1 oder 2 hinsetze. Meine einzige Erklärung die ich mir bis jetzt denken konnte wäre die, dass die Programmzeilen zwar aufgerufen werden, aber auf das Laden des Images nicht gewartet wird. Sprich das Programm ist schon soweit, dass er ein Bild zeichnen (bzw. also eine Datei) will, aber das Image noch nicht fertig geladen hat, obwohl vorher dazu aufgefordert wurde. Das war jetzt meine Idee, weil trotzdem alles geht und es gezeichnet wird.
Da zum Beispiel die Images für den Boden ganz oft geladen werden müssten und auch das ganze Programm sehr viele Objekte davon bestizt, wäre es sinnvoller das Image in einer externen Klasse zu laden und jedem Bodenobjekt einen Verweis auf dieses Image Objekt zu geben um so das Image nur einmal zu laden und immer dadurch auf das Bild zuzugreifen? Oder "merkt" sich Java sowieso, dass diese Datei schon geladen wurde und es deswegen genauso schnell geht in jedem Objekt das Image durch angeben der URL zu laden?
Wenn das Problem wirklich durch das Laden verursacht wird: Könnte ich dann das ganze beheben, wenn ich eine Liste aller Objekte bzw. benötigten Images in der externen Klasse einem MediaTracker zuweise und dann nur noch auf die Images in dieser Klasse zugreife?
Vielen Dank.
P.S: Kann mir mal jemand erklären wie der Debugger in Eclipse funktioniert?
erstmal sei gesagt ich bin ganz frisch im Programmieren mit Swing. Ich wollte mir ein kleinen Spiel bauen. Ich hab jetzt bereits eine Figur die auf Blöcke springen kann und auch sich dort so verhält, wie ich das will.
Ein Problem ist, dass ich nach 2 oder 3 maligem hinzufügen von Blöcken immer "Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException" erhalte. Es wird dabei immer auf meine Zeile g.paintImage(....); verwiesen.
Jetzt mal zu meine Frage: Kann es sein, dass es daran liegt, dass das Image noch nicht richtig geladen ist? Weil der Fehler tritt immer nur bei mehreren Blöcken auf und nicht wenn ich nur 1 oder 2 hinsetze. Meine einzige Erklärung die ich mir bis jetzt denken konnte wäre die, dass die Programmzeilen zwar aufgerufen werden, aber auf das Laden des Images nicht gewartet wird. Sprich das Programm ist schon soweit, dass er ein Bild zeichnen (bzw. also eine Datei) will, aber das Image noch nicht fertig geladen hat, obwohl vorher dazu aufgefordert wurde. Das war jetzt meine Idee, weil trotzdem alles geht und es gezeichnet wird.
Da zum Beispiel die Images für den Boden ganz oft geladen werden müssten und auch das ganze Programm sehr viele Objekte davon bestizt, wäre es sinnvoller das Image in einer externen Klasse zu laden und jedem Bodenobjekt einen Verweis auf dieses Image Objekt zu geben um so das Image nur einmal zu laden und immer dadurch auf das Bild zuzugreifen? Oder "merkt" sich Java sowieso, dass diese Datei schon geladen wurde und es deswegen genauso schnell geht in jedem Objekt das Image durch angeben der URL zu laden?
Wenn das Problem wirklich durch das Laden verursacht wird: Könnte ich dann das ganze beheben, wenn ich eine Liste aller Objekte bzw. benötigten Images in der externen Klasse einem MediaTracker zuweise und dann nur noch auf die Images in dieser Klasse zugreife?
Vielen Dank.
P.S: Kann mir mal jemand erklären wie der Debugger in Eclipse funktioniert?