D
DominikST
Gast
Hey Leute,
ich habe vor kurzem angefangen, mich mit Slick zu beschäftigen, da ab einer bestimmten Größe des Spiels Java2D(wie bei Quaxlis Tutorial beschrieben) etwas ungenau und langsam wird. Aus Gewohnheit, und um alte Spiele leichter nach Slick zu portieren, habe ich Quaxlis Ansatz in Slick nachprogrammiert. Klappt auch alles ohne Probleme, ist viel genauer, einzig das Laden der Bilder hakt ein wenig. Da Slick ja eine eigene Bilderklasse verlangt, um Animationen zu erstellen(bei Quaxli waren es ja BufferedImages), habe ich die im Tutorial besprochene "loadPics" Methode so abgeändert, das anstatt Buffered- SlickImages geladen werden. Hier der Code:
Meine Bilder habe ich in einem Ordner namens "res" neben dem src-Ordner, res befindet sich nicht im Buildpath, muss also von Hand ins spätere Jar eingefügt werden. Nun aber zum eigentlichen Problem: Ab und zu gibt es riesige Probleme beim Laden der Bilder, da Java sie anscheinend nicht finden kann. Aktuell zB wird mir eine IllegalArgumentException geworfen, wenn ich die Methode wie folgt aufrufe:
.
klappt btw auch nicht.
Habt ihr eine Idee, woran das liegen könnte? Es hat gestern mit einem der beiden Aufrufe geklappt, jetzt klappt gar nix mehr, obwohl ich nichts verändert habe.
Danke schonmal
ich habe vor kurzem angefangen, mich mit Slick zu beschäftigen, da ab einer bestimmten Größe des Spiels Java2D(wie bei Quaxlis Tutorial beschrieben) etwas ungenau und langsam wird. Aus Gewohnheit, und um alte Spiele leichter nach Slick zu portieren, habe ich Quaxlis Ansatz in Slick nachprogrammiert. Klappt auch alles ohne Probleme, ist viel genauer, einzig das Laden der Bilder hakt ein wenig. Da Slick ja eine eigene Bilderklasse verlangt, um Animationen zu erstellen(bei Quaxli waren es ja BufferedImages), habe ich die im Tutorial besprochene "loadPics" Methode so abgeändert, das anstatt Buffered- SlickImages geladen werden. Hier der Code:
Java:
private Image[] loadPic(String path, int pics)
{
BufferedImage source = null;
BufferedImage[] anim = new BufferedImage[pics];
URL pic_url = getClass().getClassLoader().getResource(path);
try
{
source = ImageIO.read(pic_url);
}
catch (IOException e)
{
e.printStackTrace();
}
Image[] ret = new Image[anim.length]; //Dieses Array wird zurückgegeben
for (int i = 0; i < pics; i++)
{
anim[i] = source.getSubimage(i * source.getWidth() / pics, 0,source.getWidth() / pics, source.getHeight());
try {
ret[i] = new Image(BufferedImageUtil.getTexture("",anim[i]));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return ret;
}
Meine Bilder habe ich in einem Ordner namens "res" neben dem src-Ordner, res befindet sich nicht im Buildpath, muss also von Hand ins spätere Jar eingefügt werden. Nun aber zum eigentlichen Problem: Ab und zu gibt es riesige Probleme beim Laden der Bilder, da Java sie anscheinend nicht finden kann. Aktuell zB wird mir eine IllegalArgumentException geworfen, wenn ich die Methode wie folgt aufrufe:
Java:
Image[] clouds = loadPics("Clouds.png",1);
Java:
Image[] clouds = loadPics("res/Clouds.png",1);
Habt ihr eine Idee, woran das liegen könnte? Es hat gestern mit einem der beiden Aufrufe geklappt, jetzt klappt gar nix mehr, obwohl ich nichts verändert habe.
Danke schonmal