我正在学习如何使用libgdx而且我没有在这里或者docs找到一个awsnser。 我的问题在标题中非常清楚。当我尝试在5秒之前加载纹理时(这是因为我使用的是Gdx计时器,仅用于测试)应用程序崩溃并提供此
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)
我会发布全班,因为很短
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);
}
}
幻灯片说明:资产经理通过内部类
的参数传递答案 0 :(得分:1)
显然,您从管理器获取的对象(它的纹理,因为设置的加载器类型 - manager.load(backgroundName, Texture.class);
)不能转换为Image
类型。
尝试从纹理创建一个Image对象:
...
if(manager.update()){
background = new Image((Texture) manager.get(backgroundName));
...