为啥 Libgdx 的 Table 不接受缩放动作?
Posted
技术标签:
【中文标题】为啥 Libgdx 的 Table 不接受缩放动作?【英文标题】:Why Libgdx's Table does not accept scale action?为什么 Libgdx 的 Table 不接受缩放动作? 【发布时间】:2012-10-23 11:31:04 【问题描述】:我正在使用 libgdx 库中的 scene2d 在我的游戏中创建一些 UI。
我使用了一个表格,我想在用户触摸时采取一些缩放操作以使按钮具有触摸感。
当我使用任何其他“Actor”类型(如 Group)并为其提供缩放动作时,它可以工作,但不能使用 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】:回答我自己的问题:
为了 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);
【讨论】:
在最新版本的库 (0.9.8) 中似乎缺少setTransform
,但您可以改为调用setClip(true)
,它可以将转换作为副作用。
@Nick - setTransform 在 0.9.8 下仍然存在。是Group
libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/…的方法
为我工作,谢谢!
设置 setTransform(true) 为我固定了桌子上的刻度。医生撒谎!他们说默认情况下这是真的,但它不适合我:)以上是关于为啥 Libgdx 的 Table 不接受缩放动作?的主要内容,如果未能解决你的问题,请参考以下文章