为什么Libgdx的表不接受规模行动?

Ali*_*aaa 8 java tablelayout libgdx scene2d

我在libgdx库中使用scene2d在我的游戏中创建一些UI.

我使用了一个表格,当用户触摸按钮触摸感觉时,我想采取一些缩放操作.

当我使用像Group这样的任何其他"Actor"类型并给它一个缩放动作时,它可以工作但不是Table.

这是我的表定义:

Table table = new Table();
table.setSize(width, height);
table.setPosition(x, y);
table.setOrigin(width/2, height/2);
table.add(new Label(...));
table.row();
...
Run Code Online (Sandbox Code Playgroud)

在我的touchDown事件中,我给它一个缩放动作:

table.addAction(Actions.scaleTo(0.8f, 0.8f, 0.1f));
Run Code Online (Sandbox Code Playgroud)

在touchUp中,我给它另一个动作来获得原始比例:

table.addAction(Actions.scaleTo(1f, 1f, 0.1f));
Run Code Online (Sandbox Code Playgroud)

正如我所说,这段代码适用于其他类型的Actors,如Image和Group.任何想法,为什么不适用于表?

Ali*_*aaa 15

回答我自己的问题:

为了libGdx的文档(https://code.google.com/p/libgdx/wiki/scene2dui#Rotation_and_scale)表,如果设置了背景,则不支持缩放和旋转.

如果我们想缩放和/或旋转表格,我们必须表现得像下面的代码:

TextButton button = new TextButton("Text Button", skin);
Table wrapper = new Table();
wrapper.add(button);
wrapper.setTransform(true);
wrapper.setOrigin(wrapper.getPrefWidth() / 2, wrapper.getPrefHeight() / 2);
wrapper.setRotation(45);
wrapper.setScaleX(1.5f);
Run Code Online (Sandbox Code Playgroud)

  • 在最新版本的库(0.9.8)中,`setTransform`似乎缺失了,但你可以调用`setClip(true)`来实现转换作为副作用. (2认同)