Java 表不显示图像
哦,好吧。。。经过将近一天的努力,我找不到它,所以。。。给你。我正在使用scene2d 我的问题是,我有一个名为Tile的类,它扩展了扩展widget的Image类,其中的纹理大小为128x128,但当我尝试将其添加到表widget组中时,我的Tile消失了 编辑:我刚刚对表进行了大小检查,并验证了在表中添加一个大小为128x128的平铺后,表显示的大小为0x0。。。这里可能出了什么问题 我已经试过了: 使用addActor而不是add,互动程序可以完美地显示,但无法按我需要的方式使用表格。。。 用add添加其他演员,他们就会出现。 在其他参与者中间添加瓦片,而发生的是,瓦片根本没有出现,甚至没有空的空间,如果将空对象添加到表中会发生。 看看首选的瓷砖尺寸是否有问题,它是128x128,这很好。 OBS:我奇怪地观察到的一件事是,当我尝试在我的瓷砖构造函数中使用setDrawable进行纹理->纹理区域->纹理区域的适当转换时,我无法以任何方式绘制它,我只需在构造函数中调用superTexture并观察ImageDrawable构造函数,就可以让它获得我的纹理,我碰巧注意到它在第一次设置drawable时做了一些其他的事情,但这只是第一次。。。 和即使使用superTexture,在将单元格添加到表中时也不会显示。。。 也许问题就在这里?我不知道 我的问题是: 有什么问题? 如果理解问题还不足以解决问题,我该怎么办? Edit2:根据要求,以下是相关代码:Java 表不显示图像,java,libgdx,widget,scene2d,Java,Libgdx,Widget,Scene2d,哦,好吧。。。经过将近一天的努力,我找不到它,所以。。。给你。我正在使用scene2d 我的问题是,我有一个名为Tile的类,它扩展了扩展widget的Image类,其中的纹理大小为128x128,但当我尝试将其添加到表widget组中时,我的Tile消失了 编辑:我刚刚对表进行了大小检查,并验证了在表中添加一个大小为128x128的平铺后,表显示的大小为0x0。。。这里可能出了什么问题 我已经试过了: 使用addActor而不是add,互动程序可以完美地显示,但无法按我需要的方式使用表格。。。
public class Tile extends Image{
// Tiles
private Texture unselected;
private Texture selected;
// InputListener for detecting mouse over
private class MouseOver extends InputListener{
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
setDrawable(new TextureRegionDrawable(new TextureRegion(selected)));
}
}
private class MouseOut extends InputListener{
public void exit(InputEvent event, float x, float y, int pointer, Actor fromActor) {
setDrawable(new TextureRegionDrawable(new TextureRegion(unselected)));
}
}
public Tile(){
super(TextureFactory.unselectedTile());
unselected = TextureFactory.unselectedTile();
selected = TextureFactory.selectedTile();
this.addListener(new MouseOver());
this.addListener(new MouseOut());
}
}
瓷砖有一个侦听器,当我将其鼠标悬停在其上时,它会改变其纹理。我删除了这些侦听器进行测试,错误仍然在发生,所以。。。不是他们
实现平铺的屏幕有些东西会被注释,因为我希望这样使用它
public class CombatScreen extends AbstractScreen{
private Table board;
public CombatScreen(SpaceGameMain game, int boardSize) {
// Passing game to super class and getting class name for tracking
super(game);
this.className = this.getClass().getSimpleName();
// Creating tile board
board = new Table();
/*
for(int i = 0; i < boardSize; i++)
{
for(int j = 0; j < boardSize; j++){
board.add(new Tile());
}
board.row();
}
*/
}
@Override
public void show(){
super.show();
board.add(new Tile());
mainStage.addActor(board);
}
public void resize(int width, int height){
super.resize(width, height);
board.setPosition((Gdx.graphics.getWidth() - Tile.width)/2, (Gdx.graphics.getHeight() - Tile.height)/2);
}
}
该表设置在屏幕中间进行测试。使用add方法时,Table类在布局子对象时调用getPrefWidth和getPrefHeight 它们的默认值为0 解决方案1在Tile类中重写getPrefWidth和getPrefHeight,并使它们返回您想要的任何内容 解决方案2具有prefSize的链表添加方法。e、 g
table.add(actor).prefSize(200,200);
使用add方法时,Table类在布局子对象时调用getPrefWidth和getPrefHeight 它们的默认值为0 解决方案1在Tile类中重写getPrefWidth和getPrefHeight,并使它们返回您想要的任何内容 解决方案2具有prefSize的链表添加方法。e、 g
table.add(actor).prefSize(200,200);
在badlogic论坛的Tanmay和NateS的帮助下找到了解决方案,他们引导我进一步了解TableLayout 在本例中,子级的原始大小不会影响电路板布局。您需要做的是使用TableLayout设置子项的大小而不是prefSize,因此工作代码如下所示:
board.add(new Tile()).size(128, 128);
只是,一些关于如何使用表格的简单误解
谢谢大家。在badlogic论坛的Tanmay和NateS的帮助下找到了解决方案,他们引导我进一步了解TableLayout 在本例中,子级的原始大小不会影响电路板布局。您需要做的是使用TableLayout设置子项的大小而不是prefSize,因此工作代码如下所示:
board.add(new Tile()).size(128, 128);
只是,一些关于如何使用表格的简单误解
谢谢大家。除此之外,如果上述答案对我这样的人不起作用,那么调用image.setScalingScaling.none或image.setScalingScaling.fit也可能是解决办法。此外,如果上述答案对我这样的人不起作用,调用image.setScalingScaling.none或image.setScalingScaling.fit也可能是解决方法。如果代码简单且简短,请发布它。代码简单,但它很大,因为它有许多未实现的细节,我需要删除,但无论如何我会发布相关部分。如果代码简单且简短,请发布它。代码简单,但是它很大,因为它有很多我需要删除的未实现的细节,但无论如何我会发布相关部分。尝试链接它,没有效果=/在我代码的另一部分,我遇到了几乎相同的问题,它也不起作用。关于默认值,它看起来不像prefSize是0,因为它显示的是128x128,这是它应该显示的。。。奇怪。无论如何,感谢您的回复o/尝试链接它,没有效果=/在我的代码的另一部分中,我遇到了几乎相同的问题,它也不起作用。关于默认值,它看起来不像prefSize是0,因为它显示的是128x128,这是它应该显示的。。。奇怪。无论如何,谢谢你的回复 o/