MediaTracker

Status
Nicht offen für weitere Antworten.
Hallo zusammen
Ich habe eine Frage wie das genau mit dem Laden von Bildern geht mit Hilfe des MediTracker Klasse. Ich habe dies so versucht aber er gibt mir an dass ich einen Fehler bei der
mario.setImages(MarioLaufenRechts, MarioLaufenLinks,
MarioSpringenRechts, MarioSpringenLinks,
MarioStehenRechts, MarioStehenLinks);
habe. Das ist die Konsolenausgabe:
Hallo
java.lang.NullPointerException
at Main.init(Main.java:31)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Kann mir vielleicht jemand sagen was jetzt hier falsch ist oder fehlt? Vielen Dank schon im Voraus.
Liebe Grüsse Philippe

Code:
import java.awt.*;
import java.applet.Applet;

/**
 * 
 * @author Philippe Heer
 *
 */

public class Main extends Applet implements Runnable{
	
	private Image MarioLaufenRechts;
	private Image MarioLaufenLinks;
	private Image MarioSpringenRechts;
	private Image MarioSpringenLinks;
	private Image MarioStehenRechts;
	private Image MarioStehenLinks;
		
	private Mario mario;
	
//	Thread in dem das Spiel laufen soll
	Thread Main;
			
	public void init(){
//		Grösse des Applets und Hintergrundfarbe festlegen
		setSize(900, 600);
		setBackground(Color.black);
		
		getImages();
				
		mario.setImages(MarioLaufenRechts, MarioLaufenLinks, 
			   		    MarioSpringenRechts, MarioSpringenLinks,
				        MarioStehenRechts, MarioStehenLinks);
		
	}
	public void getImages(){
		MediaTracker tracker = new MediaTracker(this);
		MarioLaufenRechts = getImage (getCodeBase(), "Images/Mario/MarioLaufenRechts.gif");
		tracker.addImage(MarioLaufenRechts, 1);
		MarioLaufenLinks = getImage (getCodeBase(), "Images/Mario/MarioLaufenLinks.gif");
		tracker.addImage(MarioLaufenLinks, 2);
		MarioSpringenRechts = getImage (getCodeBase(), "Images/Mario/MarioSpringenRechts.gif");
		tracker.addImage(MarioSpringenRechts, 3);
		MarioSpringenLinks = getImage (getCodeBase(), "Images/Mario/MarioSpringenLinks.gif");
		tracker.addImage(MarioSpringenLinks, 4);
		MarioStehenRechts = getImage (getCodeBase(), "Images/Mario/MarioStehenRechts.gif");
		tracker.addImage(MarioStehenRechts, 5);
		MarioStehenLinks = getImage (getCodeBase(), "Images/Mario/MarioStehenLinks.gif");
		tracker.addImage(MarioStehenLinks, 6);
		
		System.out.println("Hallo");
		
		try{
			tracker.waitForAll();
		}
		catch (Exception exception){
			
		}
	}
	
	public void start(){
//		Initialisieren und Starten des Threads Main
		Main = new Thread(this);
		Main.start();
	}
	public void run(){
		while (true){
			
			
			
			
		try{
			Thread.sleep(14);	
		}
		catch(Exception exceptioon){
			
		}
			repaint();
		}
	}
	public void paint(Graphics g){
		mario.anzeigen(g);
	}
}
Hier noch die Klasse Mario
Code:
import java.awt.*;

public class Mario{
	
	private Image MarioLaufenRechts;
	private Image MarioLaufenLinks;
	private Image MarioSpringenRechts;
	private Image MarioSpringenLinks;
	private Image MarioStehenRechts;
	private Image MarioStehenLinks;		
	
	private Component parent;
	
	public void setImages(Image MarioLaufenRechts, Image MarioLaufenLinks, 
						  Image MarioSpringenRechts, Image MarioSpringenLinks,
						  Image MarioStehenRechts, Image MarioStehenLinks) {
		this.MarioLaufenRechts = MarioLaufenRechts;
		this.MarioLaufenLinks = MarioLaufenLinks;
		this.MarioSpringenRechts = MarioSpringenRechts;
		this.MarioSpringenLinks =  MarioSpringenLinks;
		this.MarioStehenRechts = MarioStehenRechts;
		this.MarioStehenLinks = MarioStehenLinks;		
	}

	public void anzeigen(Graphics g){
		g.drawImage(MarioLaufenRechts ,100,250,20,32,parent);
		g.drawImage(MarioLaufenLinks ,130,250,20,32,parent);
		g.drawImage(MarioSpringenRechts ,160,250,20,32,parent);
		g.drawImage(MarioSpringenLinks ,190,250,20,32,parent);
		g.drawImage(MarioStehenRechts ,220,250,20,32,parent);
		g.drawImage(MarioStehenLinks ,250,250,20,32,parent);
	}
}
 

L-ectron-X

Gesperrter Benutzer
Die setImages()-Methode wird noch vor der Initialisierung der Image-Objekte aufgerufen, daher die NullPointerException.
 
L-ectron-X hat gesagt.:
Die setImages()-Methode wird noch vor der Initialisierung der Image-Objekte aufgerufen, daher die NullPointerException.

Aber es wird doch mit getImages() auf public void getImages() verwiesen und dann die Bilder geladen oder nicht?
Wie müsste ich den Code verändern?
Lg
 

L-ectron-X

Gesperrter Benutzer
Ups, das hab ich glatt überlesen. Du brauchst ein Mario-Objekt. Dann gehts. Du rufst setImages() auf einer Referenz von Mario auf, die aber noch gar nicht initialisiert ist.
 
L-ectron-X hat gesagt.:
Ups, das hab ich glatt überlesen. Du brauchst ein Mario-Objekt. Dann gehts. Du rufst setImages() auf einer Referenz von Mario auf, die aber noch gar nicht initialisiert ist. Dann sollte es gehen.

Ich habe eine Klasse Mario auf die verwiesen wird, steht ganz unten sorry wenn man die nicht sieht.
Der Fehler liegt irgendwo anders denke ich...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben