setText在发生移动时将TextButton置于初始位置一微秒或两秒

时间:2015-02-11 09:54:19

标签: libgdx scene2d

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

问题是actor是一个TextButton,我需要在运动发生时更改文本,这会带来严重的问题。似乎setText调用invalidate和invalidateHierarchy,因此当调用方法时,TextButton的位置被重置为初始位置一段时间,以便移动继续进行文本按钮位置的摇摆(跳转)(在初始化时设置的位置 - 。中央())。

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

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

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

我找到了解决方案。将Button放在Container中,并将Container添加到舞台上。在包装Button的Container上使用MoveToActions,而不是Button本身。