为什么Libgdx的Table不接受缩放动作?

9
我将使用libgdx库中的scene2d来创建游戏中的一些用户界面。
我使用了Table,希望在用户触摸时进行一些缩放操作以增强按钮的触摸感。但是,如果我使用其他“Actor”类型(如Group),并给它一个缩放操作,它可以正常工作,但是Table不行。
以下是我的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();
...

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

table.addAction(Actions.scaleTo(0.8f, 0.8f, 0.1f));

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

table.addAction(Actions.scaleTo(1f, 1f, 0.1f));

正如我所说,这段代码适用于其他类型的Actor,比如Image和Group。有任何想法为什么不适用于Table吗?

1个回答

16

回答自己的问题:

根据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);

2
在最新版本的库(0.9.8)中,setTransform似乎已经消失了,但是您可以调用setClip(true)来启用转换作为副作用。 - Nick
1
@Nick - 在0.9.8版本中,setTransform仍然存在。它是Group的一个方法。http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/Group.html#setTransform%28boolean%29 - Pool
对我有用,谢谢! - Marek Halmo
设置 setTransform(true) 为我解决了表格缩放的问题。文档有误!它们说默认是 true,但对我来说并不是 :) - Russ Wheeler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接