Wir laden das Verzeichnis für den Pfad ein und rufen dann Animation#of für jedes Unterverzeichnis auf.
Animation#of sieht so aus:
public static Animation of(File subDir, int frameTime, boolean loop) {
List<String> fileNames =
Arrays.stream(Objects.requireNonNull(subDir.listFiles()))
.filter(File::isFile)
.map(File::getPath)
.collect(Collectors.toList());
// Sort the files in lexicographic order (like the most OS)
// Animations will be played in order
Collections.sort(fileNames);
return new Animation(fileNames, frameTime, loop);
}
Dort ziehen wir aus dem Unterverzeichnis alle Dateien und legen die Pfade als Strings in eine Liste.
Diese Liste wird dann vom Painter genutzt, um die Texturen zu erstellen (new Texture(path)). Texture ist libGDX.
Ich bin mittlerweile soweit, dass File in Jars nicht verwendet werden kann und stoße immer wieder auf so etwas:
try (InputStream in = classLoader.getResourceAsStream(path);
BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
// Use resource
}
@fwatermann, so hast du das auch in deinem Crafting-Szenario gelöst (+ du hast irgendwie wild die Pfade korrigiert).
Ich würde unsere API nur ungerne ändern. Am liebsten würde ich mir aus dem InputStream einfach ein File parsen, aber das scheint nicht zu gehen. Die Beispiele, die ich finde, beziehen sich auch immer auf Text, wir arbeiten hier aber mit Bildern und Verzeichnissen.
Ich weiß auch nicht, wie sich die Pfade in Texture#ctor von LibGDX verhalten.
In meinem Kopf stelle ich mir eine Klasse ResourceLoader vor, mit der wir von nun an alle unsere Ressourcen laden.
Die Klasse würde dann erst prüfen, ob wir in einer .jar-Datei sind oder nicht (so wie @fwatermann das bereits in Crafting gemacht hat) und dann die Ressourcen als InputStream einlesen und (irgendwie auf magische Weise) zu Files oder ähnlichem parsen.
Ich habe nur keine Ahnung, wie das geht....
@AHeinisch @Lena241 @fwatermann @JudiTeller, ich bräuchte mal eure Hilfe.
Mir ist aufgefallen, dass unser Jar nicht lauffähig ist, da unsere Assets nicht gelesen werden können.
Meine Erfahrungen mit so etwas sind relativ gering, daher korrigiert mich, wenn ich falsch liege:
Im
DrawComponent
machen wirWir laden das Verzeichnis für den Pfad ein und rufen dann
Animation#of
für jedes Unterverzeichnis auf.Animation#of
sieht so aus:Dort ziehen wir aus dem Unterverzeichnis alle Dateien und legen die Pfade als Strings in eine Liste. Diese Liste wird dann vom
Painter
genutzt, um die Texturen zu erstellen (new Texture(path)
).Texture
ist libGDX.Ich bin mittlerweile soweit, dass
File
in Jars nicht verwendet werden kann und stoße immer wieder auf so etwas:@fwatermann, so hast du das auch in deinem Crafting-Szenario gelöst (+ du hast irgendwie wild die Pfade korrigiert).
Ich würde unsere API nur ungerne ändern. Am liebsten würde ich mir aus dem
InputStream
einfach ein File parsen, aber das scheint nicht zu gehen. Die Beispiele, die ich finde, beziehen sich auch immer auf Text, wir arbeiten hier aber mit Bildern und Verzeichnissen.Ich weiß auch nicht, wie sich die Pfade in
Texture#ctor
von LibGDX verhalten.In meinem Kopf stelle ich mir eine Klasse
ResourceLoader
vor, mit der wir von nun an alle unsere Ressourcen laden. Die Klasse würde dann erst prüfen, ob wir in einer .jar-Datei sind oder nicht (so wie @fwatermann das bereits inCrafting
gemacht hat) und dann die Ressourcen als InputStream einlesen und (irgendwie auf magische Weise) zu Files oder ähnlichem parsen. Ich habe nur keine Ahnung, wie das geht....@AHeinisch @Lena241 @fwatermann @JudiTeller, ich bräuchte mal eure Hilfe.