首页 > 解决方案 > 我想将资产管理器用于图像

问题描述

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 应用程序”java.lang.ClassCastException 中的异常:com.badlogic.gdx.graphics.Texture 无法转换为 com.badlogic.gdx.scenes.scene2d.ui.Image

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

标签: javaandroidlibgdxandroid-assetmanager

解决方案


根据您的错误消息:

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

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

scene2d.ui.Image 有一个接受 Texture 的构造函数,所以应该像这样调用:

Image imgVariable = new Image(i_am_a_Texture);

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

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

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

为了使对象成为纹理,您可以通过在要投射的对象中添加 (Texture) 来将其投射到纹理,如下所示:

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

然而,assetManager 已经有一种方法来说明返回的对象应该是什么类,那就是将类添加为第二个参数,如下所示

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

推荐阅读