java - 我想将资产管理器用于图像
问题描述
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
我不想将图像类型更改为纹理。
解决方案
根据您的错误消息:
线程“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))
推荐阅读
- python - QtWidgets.QFileDialog.getOpenFileName 返回一个布尔值。我正在尝试在 Python QT5 中连接两个函数,但遇到了一些麻烦
- xamarin - 如何在 Xamarin Forms 中显示一半屏幕大小的内容页面?
- javascript - 更改活动 NavLink 内按钮的颜色(React)
- cucumber - Cucumber:如何执行场景大纲的整个列表以及一组不同属性的示例
- vue.js - 将输入参数绑定到 VueJS 中的 URL 参数
- javascript - 脸书评论
- google-sheets-api - 如何使用 Google Sheets api 从单元格中获取评论
- mysql - 在 MySQL 中轻松插入多行?
- python-3.x - FeatureTools - 如何一起添加 2 列?
- python - 为什么 scipy curvefit 在之前在不相关的图上设置 xlim 时会引发错误?