2016-12-13 4 views
0

Ich lerne, wie man libgdx benutzt, und ich habe weder für hier noch für docs einen awsnser gefunden. Mein Problem ist sehr klar im Titel. Wenn ich versuche, eine Textur zu erhalten geladen 5 Sekunden vor (dies ist, weil ich einen Gdx Timer verwenden, nur zum Testen) die Anwendung abstürzt und gebe diesenLibgdx: Textur kann nicht umgewandelt werden, wenn AssetManager.Update() true zurückgibt

Exception in thread "LWJGL Application" java.lang.ClassCastException: com.badlogic.gdx.graphics.Texture cannot be cast to com.badlogic.gdx.scenes.scene2d.ui.Image 
at com.hoticecream.mad.Background.setStaticBackground(Background.java:33) 
at com.hoticecream.mad.Playgorund$1.run(Playgorund.java:102) 
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.executeRunnables(LwjglApplication.java:257) 
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:208) 
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124) 

ich werde die ganze Klasse schreiben, weil kurz

class Background { 

    private Image background; 
    private final String backgroundName; 
    private AssetManager manager; 

    Background(AssetManager manager){ 

     this.manager = manager; 

     background = new Image(); 

     backgroundName = "background1.png"; 
     manager.load(backgroundName, Texture.class); 
     manager.finishLoadingAsset(backgroundName); 



    } 

    public void setStaticBackground(Stage stage){ 


     //here is where error happends, affter manager.update() returning true 
     if(manager.update()){ 
      background = manager.get(backgroundName); 

     }else { 
      Gdx.app.log("Manager","not loaded"); 
     } 

     background.setHeight(stage.getHeight()); 
     background.setWidth(stage.getWidth()); 

     stage.addActor(background); 
    } 

    public void dispose(){ 

     manager.unload(backgroundName); 

    } 

} 

Dia Anmerkung: die Vermögensverwalter durch das Argument von den inneren Klasse übergeben wird

Antwort

1

Offenbar das Objekt (es ist Textur aufgrund des eingestellten Loader-Typs - manager.load(backgroundName, Texture.class);) Sie sind vom Manager bekommen ist nicht gießbar zu Image Art.

versuchen, ein Bild-Objekt aus der Textur zu erstellen:

... 
if(manager.update()){ 
    background = new Image((Texture) manager.get(backgroundName)); 
... 
Verwandte Themen