java LibGDX:无法在我的表中添加纹理
我的质地有问题。这张桌子很好用,但当我尝试添加纹理时,Android Studio并不适合我
private Sprite tiger2;
batch.begin();
batch.setColor(tiger2.getColor());
batch.draw(
tiger2,
Gdx.graphics.getWidth() / 2f - tiger2.getRegionWidth() / 2f,
Gdx.graphics.getHeight() / 2f - tiger2.getRegionHeight() / 2f,
tiger2.getRegionWidth(),
tiger2.getRegionHeight()
);
batch.end();
tiger2 = new Sprite(new Texture("tiger2.png"));
我不知道我是否应该这样写:
table.add(tiger2);
我得到这个错误: 无法解析方法“添加(com.badlogic.gdx.graphics.g2d.Sprite)”
table.add(**tiger2**);
# 1 楼答案
您正在尝试向表中添加一个
Sprite
而不是一个Texture
,这是出现问题的核心原因。这与执行int i = "Hello World"
基本相同,这将产生类似incompatible types
的错误。换句话说Integer
容器不能容纳String
如果将鼠标悬停在该行上,您将看到
table.add
需要一个参与者。如果转到Sprite
的定义,您会注意到这并没有以任何方式扩展Actor。因此,执行Actor a = new Sprite()
会导致与上面相同的错误,您不能将Sprite object
放在Actor container
中。这些是编程的核心基础那么什么是兼容的演员呢?继承Actor的所有内容,如标签、文本按钮、表格、滚动窗格、窗口、对话等。您也可以扩展
Action
自己创建自己的Actor,但由于您正在努力解决这个问题,所以应该等待最简单的解决方法是使用
scene2d.ui.Image
。如果你检查这个类,你会看到它从Widget
扩展而来,如果你检查Widget
,你会看到它从Actor
扩展而来,因此Image是一个演员,因为你是你母亲的孩子,也是你祖母的母亲如果您检查了
Image
构造函数所采用的内容,那么您会注意到最简单的方法是创建一个SpriteDrawable
,因为图像不采用Sprite
,就像table.add
也不采用精灵一样SpriteDrawable
接受一个精灵,是一个Drawable
,它与Image
的构造函数兼容图像也需要一个纹理,所以如果你没有用你的精灵做花哨的
Sprite
东西,你也可以用Texture
来创建图像。您可以通过键入new Image(
在IDE中看到这一点,intellisense将让您知道兼容的构造函数试着理解这些类型,并使用您的IDE和文档来了解您可以使用什么。使用androidstudio,您可以右键单击一个类并执行
goto -> declaration
,然后查看相关的类。当然,除非您使用类似记事本的东西,否则其他IDE也有相同的方法# 2 楼答案
假设该表是Scene2D表:
纹理不是演员,不能添加到表中。要解决此问题,可以将纹理添加到图像(包含纹理的演员)。它看起来像这样: