setText 在移动发生时将文本按钮在初始位置摇动一两微秒

setText jolts TextButton at inital position for a microsecond or two while movement is happening

我有一个演员,我正在使用 moveTo(destinationx, destinationy, time) 移动它。

问题是 actor 是一个 TextButton,我需要在移动发生时更改文本,这造成了一个严重的问题。 setText 似乎调用了 invalidate 和 invalidateHierarchy,因此当调用该方法时,TextButton 的位置将暂时重置为初始位置,以便移动继续进行文本按钮位置(初始化时设置的位置 - .中央())。

我的演员动作的所有动态都是运行计划的,只要我不修改文本,而Actions.moveTo仍然是运行。如果我确实修改了它,那么在调用 setText 时我会看到文本的颠簸。

我该如何解决这个问题?

通过在 Table 中放置一个 Button 并在 Button 上使用 moveTo 操作,我能够重现您的问题。问题在于,当一个小部件属于 Table 时,Table 负责控制小部件的位置和大小,因此影响位置的操作将无法正常工作。

如果您要将小部件在屏幕上移动到任意位置,无论如何将它保持在静态 Table 是没有意义的。如果将 Button 直接添加到舞台,问题就会消失。

然而,我又发现了一个问题。如果 Button 没有 Table 父级,则当其文本更改时,它不会正确更新自己的大小。

我找到了解决办法。将 Button 放入 Container 并将 Container 添加到 Stage。在包装 Button 的 Container 上使用 MoveToActions,而不是 Button 本身。