我想使用assetmanager作为图像

时间:2018-05-09 14:58:26

标签: java android libgdx android-assetmanager

MyGdxGame.java

 public void print(){
    manager=new AssetManager();
    manager.load("selectlevel.png",Texture.class);
    manager.finishLoading();
    }

选择级别屏幕

 public void image(){
    Image img1=game.manager().get(("selectlevel.png"));
    }

我得到了什么(

  

线程“LWJGL Application”中的异常java.lang.ClassCastException:   com.badlogic.gdx.graphics.Texture无法转换为   com.badlogic.gdx.scenes.scene2d.ui.Image

我不想将图像类型更改为纹理。

1 个答案:

答案 0 :(得分:1)

根据您的错误消息:

  

线程“LWJGL Application”中的异常java.lang.ClassCastException:com.badlogic.gdx.graphics.Texture无法强制转换为com.badlogic.gdx.scenes.scene2d.ui.Image

您正在尝试将Texture放置在为scene2d.ui.Image创建的变量中。这不起作用,因为Texture和scene2d.ui.Image非常不同。

scene2d.ui.Image有一个带纹理的构造函数,所以应该这样调用:

Image imgVariable = new Image(i_am_a_Texture);

在您提到的评论中,您收到了错误

  

无法解析构造函数'Image(java.lang.Object)'

这就是说当你使用新的Image构造函数时,你传递了一个Object而不是它所期望的纹理。

为了使对象成为纹理,您可以通过从您想要投射的对象中添加(纹理)来将其投射到纹理:

 Texture textureVariable = (Texture) game.manager().get(("selectlevel.png"));

然而,资产管理器已经有一种方法可以说明对象返回的类应该是什么,并且将类添加为第二个参数,如下所示

Texture textureVariable = game.manager().get(("selectlevel.png",Texture.class))