什么?除了.row()之外,还会导致libgdx表开始新行吗?
这对我来说有点神秘,但我在libgdx中有一个表,所有东西都垂直放置在新的单元格中 我没有在任何地方使用.row()。 可能在这里做了些傻事,但我看不出来。 关于是什么导致这种情况的线索 (如果需要的话,我会发布代码,但它不是那么整洁,而且我认为知道任何可能导致换行的东西都会对我有所帮助,所以不一定需要) 编辑 试图将代码缩减到添加项时发生的所有位 代码; //添加时触发的函数 //SSSNode是对项目细节的语义引用,它只是被制作成一个类似标签的对象什么?除了.row()之外,还会导致libgdx表开始新行吗?,libgdx,Libgdx,这对我来说有点神秘,但我在libgdx中有一个表,所有东西都垂直放置在新的单元格中 我没有在任何地方使用.row()。 可能在这里做了些傻事,但我看不出来。 关于是什么导致这种情况的线索 (如果需要的话,我会发布代码,但它不是那么整洁,而且我认为知道任何可能导致换行的东西都会对我有所帮助,所以不一定需要) 编辑 试图将代码缩减到添加项时发生的所有位 代码; //添加时触发的函数 //SSSNode是对项目细节的语义引用,它只是被制作成一个类似标签的对象 public void addItem(
public void addItem(SSSNode itemsnode){
Item newitem = new Item(itemsnode); //Item extends label
allItems.add(newitem);
super.add(newitem).size(60, 30).top().left().fillY().expandY();
//pack();
//super.invalidate();
//super.validate(); (tried doing pack, validate, and none...neither helped)
//update the GUI bar in case the inventory tab isnt there yet
MainExplorationView.usersGUI.setDataVisible(true);
}
下面的代码在“usersGUI”中,它创建并处理名为inventory的弹出窗口,这是图片中的内容,是我无法操作的表
//ensures the interface for the inventory popup is setup and visible
//also refreshes the links
public void setDataVisible(boolean visible){
if (myContents.isVisible!=true){
myContents.isVisible=visible;
refreshlinks();
setupInventory();
}
}
private void refreshlinks() {
super.clearChildren();
super.addActor(backgroundobject);
super.addActor(ME.playersInventory); //re adds the inventory panel table?
int y = 440;
ME.playersInventory.validate(); //revalidated the table (I dumped this almost everywhere in frustration)
//below is not relevant, it updates other items in a onscreen gui
for (InterfaceButton link : allLinks) {
if (link.isVisible==true){
link.setPosition(5,y);
super.addActor(link);
y=y-30;
}
}
backgroundobject.setSize(85, 200);
backgroundobject.setPosition(0,y+20);
}
//ensures inventory is setup once.
public void setupInventory() {
if (setup){
return;
}
Log.info("setupInventory");
ME.playersInventory.setPrefWidth(super.getWidth());
Log.info("width is "+super.getWidth());
ME.playersInventory.setHeight(200);
ME.playersInventory.pack();
float X = myContents.getX();
float Y = myContents.getY()-ME.playersInventory.getHeight();
Log.info("popping up inventory at:"+X+","+Y);
ME.playersInventory.setPosition(X, Y);
super.validate();
setup=true;
}
完整的代码也在GitHub上;
整个项目是一个演示/测试和开源分布式语义数据库系统的游戏。相关位是库存,可能是创建库存的gui
我认为任何对LibGDXs工作有很好了解的人都不需要查看任何代码,但是如果还有其他东西可以告诉表开始新行的话。(也就是说,是否有任何布局限制会导致它自动发生?答案似乎是layout()会导致新行;
坚持这是它应该如何工作的,尽管文档没有这样说。答案似乎是layout()会产生新行;
这就是它应该如何工作的,尽管文档没有这样说。
布局
结束当前行是使布局逻辑更简单的副作用。现在是
注意HorizontalGroup仍然更适合您的用例,它的好处是您可以在任何索引处添加/删除参与者。
layout
结束当前行是使布局逻辑更简单的一个副作用。现在是
注意HorizontalGroup仍然更适合您的用例,它的优点是您可以在任何索引中添加/删除参与者。请发布相关代码。我发布了相关代码,但它目前的代码很糟糕。您是否尝试只使用表的add()方法而不是addActor()方法?我尝试了addActor()但什么都没有出现。使用add我成功地刷新了一个测试表,没有任何问题。我使用addActor将库存表添加到其父表中,因为我希望它绝对定位,如果这是html Id,请将其视为“悬停”在页面的其余部分。我可以尝试添加…但表本身添加到其父级的方式肯定不会影响在表中添加内容的方式吗?(正如您所看到的,我刚才使用add(…)调用.pack()会导致项目布局,也会导致.validate()(这会导致所有子项也使用.validate())。也许,当您在表中调用它时,在向表单元格添加新项后,它会调用该单元格中的.row()方法或等效方法。我不明白你为什么要在GUI上调用这么多.pack()和.invalidate()和.validate()请发布相关代码。我这样做了,但它的代码很糟糕。您是否尝试只使用表的add()方法而不是addActor()方法?我尝试了addActor()但什么都没有出现。使用add我成功地刷新了一个测试表,没有任何问题。我使用addActor将库存表添加到其父表中,因为我希望它绝对定位,如果这是html Id,请将其视为“悬停”在页面的其余部分。我可以尝试添加…但表本身添加到其父级的方式肯定不会影响在表中添加内容的方式吗?(正如您所看到的,我刚才使用add(…)调用.pack()会导致项目布局,也会导致.validate()(这会导致所有子项也使用.validate())。也许,当您在表中调用它时,在向表单元格添加新项后,它会调用该单元格中的.row()方法或等效方法。我不明白你为什么要在GUI上调用这么多.pack()和.invalidate()和.validate()谢谢,我用了HorizontalGroup,但很高兴能把它清理干净。谢谢,我用了HorizontalGroup,但很高兴能把它清理干净。