libgdx(libktx)中的滚动面板

libgdx(libktx)中的滚动面板,libgdx,libktx,Libgdx,Libktx,我有一个滚动面板测试头在它。通过调试,我看到面板本身就在那里,但是内容并没有显示在其中,尽管它看起来是这样的。也许有人知道这是怎么可能的?面板本身会根据表的大小进行调整,但表本身以及表中的内容不会调整。我发现了问题的根本原因-您错误地将参与者添加到舞台,导致窗口和滚动窗格舞台为空。您必须在GameManager中更改此行: screen.rootStage.actors.add(inventoryWindow.window) 关于这一行: screen.rootStage.addActor(i

我有一个滚动面板测试头在它。通过调试,我看到面板本身就在那里,但是内容并没有显示在其中,尽管它看起来是这样的。也许有人知道这是怎么可能的?面板本身会根据表的大小进行调整,但表本身以及表中的内容不会调整。

我发现了问题的根本原因-您错误地将参与者添加到舞台,导致
窗口和
滚动窗格
舞台
。您必须在
GameManager
中更改此行:

screen.rootStage.actors.add(inventoryWindow.window)
关于这一行:

screen.rootStage.addActor(inventoryWindow.window)
虽然您的方法确实将参与者添加到了
阶段
,但他们没有添加到根
,并且没有设置他们的
阶段
变量,这导致了像这样奇怪的错误。总是喜欢使用公共API方法,而不是直接访问类变量


关于查明问题:如果查看呈现代码的
滚动窗格
,您会注意到只有当
clipBegin
返回true时,它才会呈现子项。如果深入挖掘,
clipBegin
有一个特殊的检查,可以防止绘制子项:
If(stage==null)返回false。基本上,如果没有
阶段,就无法使用
滚动窗格

您是否尝试在滚动窗格中嵌套的表中调用
pack()
?例如,在该项循环之后。我还建议首先尝试在滚动窗格外自定义表,以确保它也按预期呈现,然后将其放入滚动窗格中。作为补充说明,您可以通过
Scene2DSkin.defaultSkin
全局设置
Skin
实例,这样您就可以避免将其传递给每个小部件方法。@Czyzby,在滚动之外,我在那里收集了表,它工作正常,pack()也这样做了,就像layuot(),这些都没有帮助,我看到滚动条根据内容的大小调整大小,但它不可见。我以不同的方式尝试了皮肤,在我看来,如果皮肤出了问题,那么至少通过调试您可以看到内部表的轮廓。您可以上传一个再现问题的最小示例(例如,到GitHub)吗?如果不想发布资产,可以使用默认外观之一。如果你能在官方libktx/ktx存储库中的一个问题中链接这个例子,我可以浏览代码,我们可以将讨论转移到那里。@czyby,好吧,现在不行,工作中有一个障碍,我想在6-7小时后,当我在家时,我会创建并向你抛出一个链接。@czyby我清理了这个项目,如果可能的话,并将这个测试版本上传到github,在这个[窗口]()中,有一个滚动条,现在它被注释掉了,取而代之的是一个表。我添加了//Scroll和//Table注释,以了解哪些内容需要注释掉,哪些内容需要取消注释才能在它们之间切换。是的,这很有帮助,非常感谢。如果出现此问题,我将无法删除存储库。我还将注意到,删除时存在问题,例如,必须删除对象
inventoryWindow.window.remove()
,而不是从其列表中删除。