表中伸缩的libgdx按钮

问题描述:

我想在屏幕的角落创建用于控制游戏的按钮。 它用于创建皮肤,将该皮肤添加到new ImageButton(skin),并将该按钮的大小和位置设置为所需的值。我现在使用box2d,如果我现在将按钮的大小设置为(1, 1)高度是正确的,但宽度总是大约2/3的屏幕,无论我改变它。 我尝试使用一个表,这样做:表中伸缩的libgdx按钮

table = new Table(); 
    table.setFillParent(true); 
    stage.addActor(table); 
    table.setDebug(true); 
    table.add(boostButtonn).width(1).height(1).bottom().right(); 

但我不知道如何把它画在屏幕的一角,还有按钮在屏幕的中间使用这个正确的尺寸绘制表,但皮肤伸出按钮。视口的宽度和高度分别为40,24

我的皮肤和按钮的代码:

Skin skin = new Skin(Gdx.files.internal("skin/flath-earth-ui.json")); 
Button bootsButton = new ImageButton(skin); 

然后我把它添加到表

+0

请在图片视图中说明您的要求? – Aryan

+0

我想要1个按钮在右上角,2个左下角,它们之间有一些空间,右下角是1个。 – DreamsInHD

+0

按钮自己正在工作(我看到从调试器按钮的红线),但按钮的皮肤是非常拉伸 – DreamsInHD

问题不在于你如何对齐或安排你的widget。问题是为什么按钮/小部件甚至文本被拉伸并看起来模糊。

为什么拉伸?

问题出在您的资源中。您的资源应该与您的视口兼容。如果你使用的是小视口,那么我们需要你的资源(图片和字体)。

您正在使用皮肤,用于创建Widget。 皮肤取决于.json文件,其中包含有关您的Widget对象的信息以及包含图像文件信息的.atlas文件。

您使用40作为视口的宽度,那么用作drawable的按钮图像应该在大约的范围内。 10.

那么,什么是现在的解决方案:

如果你已经准备好,然后用一些较高的视维根据自己的资源,否则创建根据视创造资源的所有资源。

+0

好吧谢谢,但如果我使用更高的视口病不得不改变我的整个游戏,我不能转换皮肤的尺寸?这些资源不是我的,我从libgdx的git仓库下载了它们。这个drawable应该在10的范围内是什么意思? 10像素? – DreamsInHD

+0

Widget使用[drawable](https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/scenes/scene2d/utils/Drawable.html)以给定的矩形尺寸绘制自己。 – Aryan

+0

您可以通过'.json'皮肤自己创建样式,而不是预定义样式。在你的Widget中使用这种风格。 – Aryan