Assetmanager bei libgdx

R

Rashit

Neues Mitglied
2
Hallo Leute,

Ich habe eine Frage zum Thema Assetmanager bei libgdx.

Die normale Syntax bei dem Assetmanager ist ja:

Assetmanager.load("FileName", class);

wenn ich jetzt die Datei, z.B den Sound "Beep.wav" einfach im assets-Ordner habe, gibt es auch kein Problem.

Dann schreibe ich einfach:

Assetmanger.load("Beep.wav", Sound.class);

Und der Sound wird geladen ohne Probleme.

Jedoch wenn ich die Datei in einen Unterordner reinstecke der im Ordner assets liegt, z.B Sounds, dann kann der Manager die Datei nicht finden.

Assetmanager.load("Sounds/Beep.wav", Sound.class);

Ich wollte aber sehr gerne mit Unterordnern arbeiten, da bei vielen Assets das ganze dann doch recht unübersichtlich wird.

Ich bedanke mich jetzt schon für alle, möglich schnellen antworten.

DANKE! :biggrin:

PS.

Hier die Fehlermeldung:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Asset not loaded: beep.wav
at com.badlogic.gdx.assets.AssetManager.get(AssetManager.java:125)
at com.Ball.game.TimerScreen.<init>(TimerScreen.java:23)
at com.Ball.game.BallGame.create(BallGame.java:37)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
 
Zuletzt bearbeitet:
Die Seite kenne ich bereits ^^

Und die ist keineswegs hilfreich.

Alles kleinschreiben bring NIX. ;)

P.S

"Asset not loaded: beep.wav"

 
Zuletzt bearbeitet:
Ajo, wenn es klein nicht geht, dann steht doch trotzdem die Antwort da:

"A single place to store all your assets."

Btw: musst ja nicht mit libgdx arbeiten, wenn dir die Arbeitsabläufe dort nicht passen. Ich habe mich auch irgendwann mal gegen libgdx entschieden und fahre bis jetzt ziemlich gut damit. Spätestens wenn es darum geht Google Play Services einzubinden, sieht man mit libgdx ziemlich alt aus. Auf der anderen Seite kann ich dir zu 100% versichern, dass es deutlich(!!) einfacher ist über 3000 Asset-Dateien den Überblick zu behalten, als OpenGL zu lernen.:flapper:

 
Zuletzt bearbeitet:
Das ist keine Antwort auf meine Frage :biggrin:

Ich weiss, dass es funktioniert, weil ich gesehen habe, dass es funktioniert :)

Ich möchte wissen was ich falsch mache oben.
 
Woher weißt du dass es geht? Wenn du einen funktionierenden Code irgendwo hast, verlinke den doch hier, dann machst du es anderen auch leichter dir zu helfen.

Der ursprüngliche Beitrag von 15:40 Uhr wurde um 15:43 Uhr ergänzt:

Oder stell wenigstens mal deinen Code hier ein. :D

Hast du den Loader gesetzt und lädst dann?

Code:
manager.[B]setLoader[/B](MyAssetClass.class, new MyAssetLoader(new InternalFileHandleResolver())); 
manager.load("data/myasset.mas", MyAssetClass.class);
 
public static Assetmanager manager = new Assetmanager();

manager.load("beep.wav", Sound.class);

Das ist soweit der funktionierende Code.
Lege ich die wav in einen assetunternordner und passe den code an:

manager.load("sounds/beep.wav", Sound.class);

Klappt nix.
 
Das hast du schon mal geschrieben. Warum sollte es abends um 17 Uhr klappen, wenn es mittags um 12 schon nicht geklappt hat?

Lese dir den Link durch, den ich dir geschickt habe.
Mein Tipp: Der Abschnitt "Writing your own Loader" beschreibt genau das was du haben willst.

manager.setLoader(Sound.class, new MyAssetLoader(new InternalFileHandleResolver()));
manager.load("sounds/beep.wav", Sound.class);

Willst dir wohl nicht helfen lassen, oder?
 
Hat jemand anderes vielleicht noch eine Idee? Oder lebt in dieser Community nur ein "Android-Experte"?
 
Hmm, hat halt nicht jeder hier im Forum mit libgdx gearbeitet, deswegen würde ich an deiner Stelle generell schon mal den Ton überdenken... ;)

Aber vielleicht schreibt ja noch mal jemand anderes was dazu :)
Oder fragst mal im libgdx-Forum, vielleicht nimmst du da die Ratschläge an. Aber vermutlich werden sie dich dort auch auf die Doku verweisen. Weil dort nunmal steht, wie vor zu gehen ist, wenn Assets geladen werden sollen. Und wenn du keinen Bock drauf hast diese Vorgehensweise umzusetzen, oder der englischen Sprache nicht mächtig bist, dann empfehle ich dir es mit dem Programmieren lieber sein zu lassen.

Aber hier nochmal der Text:
Writing your own Loaders

I can't anticipate which other types of resources you want to load, so at some point you might want to write your own loaders. There are two interfaces called SynchronousAssetLoader and AsynchronousAssetLoader you can implement. Use the former if your asset type is fast to load, use the latter if you want your loading screen to be responsive. I suggest basing your loader on the code of one of the loaders listed above. Look into MusicLoader for a simple SynchronousAssetLoader, look into PixmapLoader for a simple AsynchronousAssetLoader. BitmapFontLoader is a good example of an asynchronous loader that also has dependencies that need to be loaded before the actual asset can be loaded (in that case it's the texture storing the glyphs). Again, you can do pretty much anything with this.
Once you are done writing your loader, tell the AssetManager about it:

manager.setLoader(MyAssetClass.class, new MyAssetLoader(new InternalFileHandleResolver()));
manager.load("data/myasset.mas", MyAssetClass.class);

Bin mal gespannt, ob du noch eine für dich zufriedenstellende Lösung deines Problems findest :D
Von meiner Seite wars das jetzt, mein Freund.
 
  • Danke
Reaktionen: droidjam

Ähnliche Themen

D
Antworten
17
Aufrufe
408
datNeMo
D
M
Antworten
3
Aufrufe
166
moin
M
Y
Antworten
4
Aufrufe
1.227
swa00
swa00
Zurück
Oben Unten