libgdx 中的滚动面板 (libktx)
ScrollPanel in libgdx (libktx)
我在其中有一个滚动面板测试 headers。通过调试,我看到面板本身是存在的,但是里面没有显示内容,虽然看起来是这样。也许有人知道这怎么可能?面板本身会根据 table 的大小进行调整,但是 table 本身及其内部的内容并不是 visible。
我找到了问题的根本原因 - 您错误地将演员添加到舞台,导致 Window
和 ScrollPane
的 Stage
成为 null
。您必须在 GameManager
:
中更改此行
screen.rootStage.actors.add(inventoryWindow.window)
到这一行:
screen.rootStage.addActor(inventoryWindow.window)
虽然您的方法确实将演员添加到 Stage
,但他们没有添加到根 Group
并且他们的 Stage
变量未设置,这导致了奇怪的错误,例如这个。总是喜欢使用 public API 方法而不是直接访问 class 变量。
关于查明问题:如果您查看 ScrollPane
呈现代码,您会注意到它仅在 clipBegin
returns 为真时才呈现 children。如果你深入挖掘,clipBegin
有这个特殊的检查来阻止 children 被绘制:if (stage == null) return false;
。基本上,您不能在没有 Stage
.
的情况下使用 ScrollPane
我在其中有一个滚动面板测试 headers。通过调试,我看到面板本身是存在的,但是里面没有显示内容,虽然看起来是这样。也许有人知道这怎么可能?面板本身会根据 table 的大小进行调整,但是 table 本身及其内部的内容并不是 visible。
我找到了问题的根本原因 - 您错误地将演员添加到舞台,导致 Window
和 ScrollPane
的 Stage
成为 null
。您必须在 GameManager
:
screen.rootStage.actors.add(inventoryWindow.window)
到这一行:
screen.rootStage.addActor(inventoryWindow.window)
虽然您的方法确实将演员添加到 Stage
,但他们没有添加到根 Group
并且他们的 Stage
变量未设置,这导致了奇怪的错误,例如这个。总是喜欢使用 public API 方法而不是直接访问 class 变量。
关于查明问题:如果您查看 ScrollPane
呈现代码,您会注意到它仅在 clipBegin
returns 为真时才呈现 children。如果你深入挖掘,clipBegin
有这个特殊的检查来阻止 children 被绘制:if (stage == null) return false;
。基本上,您不能在没有 Stage
.
ScrollPane