Hallo Zusammen
Ich versuche seit einigen Monaten über Foren und Tutorials mir etwas Java beizubringen. Hintergedanke ist ein Game zu machen. Nun stehe ich vor einem Problem welches ich nicht sehe daher wende ich mich an euch.
Aufbau:
Ich lade alle Bilder in einer seperaten Classe in eine BufferedImage[] variable. Diese Classe inizialisiere ich zu beginn. Hintergedanke ist das vermeiden von unnötigem Speicher bei vermehrtem laden der Bilder und eine gute abgrenzung.
Wenn ich nun über System.out.PrintLn das Object in der Classe ausgeben lasse hat es einen Inhalt jedoch nicht wenn ich die Abfrage aus dem Gamethread mache(nach dem inizialisieren der Classe).
Hier mein QuellText:
ImageLoader
[Java]
public int staticCount;
// StaticImage
public BufferedImage[] staticBackground;
public String[] staticName;
public int[] staticPosX, staticPosY;
public boolean[] staticSubImage;
public int[] staticNumSubImage;
public int buttonCount;
private String NameImg;
public ImageLoader(){
try {
InputStream in = getClass().getClass().getResourceAsStream("/Config/Layout.bin");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
while((line = br .readLine()) != null) {
// Ganze Zeile:
String[] parts = line.split(" = ");
if (parts[0].contentEquals("Count")) {
staticCount = Integer.parseInt(parts[1]);
}
staticBackground = new BufferedImage[staticCount];
staticName = new String[staticCount];
staticPosX = new int[staticCount];
staticPosY = new int[staticCount];
staticSubImage = new boolean[staticCount];
staticNumSubImage = new int[staticCount];
for(int num = 0; num < staticCount; num++){
if (parts[0].contentEquals("static" + num)) {
String[] parts2 = parts[1].split(", ");
NameImg = "/Image/Base/Desing/" + parts2[0] + num + ".png";
System.out.println("static Image loging..." + NameImg);
staticBackground[num] = ImageIO.read(getClass().getResourceAsStream(NameImg));
staticName[num] = parts2[0];
staticPosX[num] = Integer.parseInt(parts2[1]);
staticPosY[num] = Integer.parseInt(parts2[2]);
staticSubImage[num] = Boolean.parseBoolean(parts2[3]);
staticNumSubImage[num] = Integer.parseInt(parts2[4]);
System.out.println("staticBackground" + num);
System.out.println(staticBackground[num]);
System.out.print(" Y: " + parts2[1] + ", X: " + parts2[2]);
System.out.print(", SubImage " + parts2[3]);
System.out.println(", Nummer of SubImage " + parts2[4]);
}else{
// System.out.println(" No Image found");
// System.out.println(parts[0]);
}
}
// ...
}
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
}
[/code]
Auszug aus GameThread
Auszug aus Console
Nach allem was ich in den Foren gelesen habe sollte dies so klappen, jedoch erhalte ich den wert Null.
Danke für eure Unterstützung.
Ich versuche seit einigen Monaten über Foren und Tutorials mir etwas Java beizubringen. Hintergedanke ist ein Game zu machen. Nun stehe ich vor einem Problem welches ich nicht sehe daher wende ich mich an euch.
Aufbau:
Ich lade alle Bilder in einer seperaten Classe in eine BufferedImage[] variable. Diese Classe inizialisiere ich zu beginn. Hintergedanke ist das vermeiden von unnötigem Speicher bei vermehrtem laden der Bilder und eine gute abgrenzung.
Wenn ich nun über System.out.PrintLn das Object in der Classe ausgeben lasse hat es einen Inhalt jedoch nicht wenn ich die Abfrage aus dem Gamethread mache(nach dem inizialisieren der Classe).
Hier mein QuellText:
ImageLoader
[Java]
public int staticCount;
// StaticImage
public BufferedImage[] staticBackground;
public String[] staticName;
public int[] staticPosX, staticPosY;
public boolean[] staticSubImage;
public int[] staticNumSubImage;
public int buttonCount;
private String NameImg;
public ImageLoader(){
try {
InputStream in = getClass().getClass().getResourceAsStream("/Config/Layout.bin");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
while((line = br .readLine()) != null) {
// Ganze Zeile:
String[] parts = line.split(" = ");
if (parts[0].contentEquals("Count")) {
staticCount = Integer.parseInt(parts[1]);
}
staticBackground = new BufferedImage[staticCount];
staticName = new String[staticCount];
staticPosX = new int[staticCount];
staticPosY = new int[staticCount];
staticSubImage = new boolean[staticCount];
staticNumSubImage = new int[staticCount];
for(int num = 0; num < staticCount; num++){
if (parts[0].contentEquals("static" + num)) {
String[] parts2 = parts[1].split(", ");
NameImg = "/Image/Base/Desing/" + parts2[0] + num + ".png";
System.out.println("static Image loging..." + NameImg);
staticBackground[num] = ImageIO.read(getClass().getResourceAsStream(NameImg));
staticName[num] = parts2[0];
staticPosX[num] = Integer.parseInt(parts2[1]);
staticPosY[num] = Integer.parseInt(parts2[2]);
staticSubImage[num] = Boolean.parseBoolean(parts2[3]);
staticNumSubImage[num] = Integer.parseInt(parts2[4]);
System.out.println("staticBackground" + num);
System.out.println(staticBackground[num]);
System.out.print(" Y: " + parts2[1] + ", X: " + parts2[2]);
System.out.print(", SubImage " + parts2[3]);
System.out.println(", Nummer of SubImage " + parts2[4]);
}else{
// System.out.println(" No Image found");
// System.out.println(parts[0]);
}
}
// ...
}
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
}
[/code]
Auszug aus GameThread
Java:
public GameThread(ScreenManager scm) {
super();
this.scm = scm;
setPreferredSize(
new Dimension(scm.HEIGHT, scm.WIDTH));
setFocusable(true);
requestFocus();
System.out.println("GameThread Loding...");
il = new ImageLoader();
System.out.println(il.staticBackground[0]);
}
Auszug aus Console
Code:
GameThread Loding...
static Image loging.../Image/Base/Desing/Base0.png
staticBackground0
BufferedImage@5ad75c47: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@70eb67e8 transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 1600 height = 1200 #numDataElements 3 dataOff[0] = 2
Y: 0, X: 0, SubImage true, Nummer of SubImage 3
null
Nach allem was ich in den Foren gelesen habe sollte dies so klappen, jedoch erhalte ich den wert Null.
Danke für eure Unterstützung.