Kann mir jemand helfen, ein altes Programm in Java zu starten?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Schau, dass du die Methode so anpasst, dass sie wartet, bis die Textur geladen ist.

Zur Not wartest du aktiv, sprich mit Schleife, die prüft, ob die Bedingung erfüllt ist und wenn nicht, den Thread schlafen legt.
Wobei das auch nur klappt, wenn das Programm multithreaded ist, wenn nicht müsstest du schauen, dass die Methode zum rechten zeitpunkt aufgerufen wird.
Im Übrigen solltest du danach auch schauen, dass du ordentliche Synchronisationsmaßnahmen wählst.

Wobei ich ja vermute, dass das Problem eigentlich woanders liegt. Ich nehme an, eigentlich sollte "_assetManager_ .isLoaded" blockieren, bis das Laden abgeschlossen wurde.

Ich habe jetzt versucht, es so zu programmieren, dass bis zum Vollenden des Ladens gewartet wird, doch hat es bei mir nicht geklappt. Ebenso ist mir aufgefallen, dass ich überhaupt nicht weiß, wo denn der Pfad wirklich übergeben wird... Ich habe mir die Methoden und Klassen angeschaut, in denen 'getTextureAsset' aufgerufen wird, doch wird dort ebenso auf Variablen verwiesen. Nichtsdestotrotz wird mir angezeigt, dass ein Asset nicht geladen werden konnte, wenn ich die if-Anweisung einfach weglassen.

Wie erkennt man denn, dass das Programm multithread ist? (Wenn es denn eins ist)

0
@Morgoth364
Ebenso ist mir aufgefallen, dass ich überhaupt nicht weiß, wo denn der Pfad wirklich übergeben wird

Na dann ist vielleicht der falsch? Hast du dir den schoneinmal ausgeben lassen?

Wie erkennt man denn, dass das Programm multithread ist?

Solltest du beispielsweise im Debugger sehen können oder in anderen Tools.

Ansonsten ergibt sich das auch, wenn du in dem Thread wartest. Wenn das Program nicht mulitthreaded ist, dnan tut sich nichts mehr, denn dann ist kein anderer Thread da, der die Arbeit erledigen könnte, auf die gewartet wird.

0
@Destranix

Ich habe das Problem jetzt gelöst. Das ist der Code dafür:

public static Texture getTextureAsset(String textureFilenamePath){
        Texture texture = new Texture("src/main/resources/assets/"+ textureFilenamePath);
        return texture;
    }

Also einfach direkt ein Texture-Object mit dem jeweiligen Pfad erstellen.

1
@Morgoth364

Nun, dann wird die Textur synchron erstellt und nicht asynchron würde ich vermuten. Musst du schauen, ob du das später evtl. noch anpassen möchtest.

Aber gut, dass es jetzt zumindest läuft.

1