我不知道这只是我,但drawables让我感到困惑。他们是打算保持给定的尺寸,还是有办法在其中放大图像?我知道他们可以使用ninepatch通过拉伸图像来填充某些区域,但我想缩放它伸展的图像。我正在使用TextButton 对于我的菜单按钮,但它们太大了,我很想知道如何扩展它们。我正在从一张地图集中检索皮肤,其中有九个图像。 这是设置屏幕: 以下是我正在使用的包中的图像: 这是TextureAtlas和Skin的初始化:
buttonAtlas = new TextureAtlas(Gdx.files.internal("buttons/buttons.pack"));
buttonSkin = new Skin(buttonAtlas);
这是菜单按钮的初始化。
TextButtonStyle textButtonStyle = new TextButtonStyle();
textButtonStyle.up = Assets.buttonSkin.getDrawable("bluebutton");
textButtonStyle.down = Assets.buttonSkin.getDrawable("redbutton");
textButtonStyle.font = font;
buttonMenu = new TextButton("Menu", textButtonStyle);
buttonMenu.pad(20.0f);
buttonMenu.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
game.fade.startFadeOut();
super.clicked(event, x, y);
}
});
也许我可以改变我把它放在桌子上的方式,或者我如何把桌子放在舞台上?
table.add(buttonMenu).width(Gdx.graphics.getWidth()/4);
stage.addActor(table);
作为最后的手段,我想我可以尝试创建自己的文字按钮演员,我可以缩放,谢谢你的时间。
答案 0 :(得分:1)
首先,如果您知道图像太大:最好将图像本身缩放到较小的尺寸,然后使用TexturePacker生成包含较小图像的新TextureAtlas。
无论如何,你可以使用TableLayout缩放图像按钮,如果你真的想要,请参见示例:
table.add(buttonMenu).width(100).height(100);
答案 1 :(得分:0)
上述答案对我没有用,但我有一个解决方案。
您可以制作辅助相机并将其附加到舞台上。 要缩放表格,只需缩放辅助摄像机的视口大小
一个例子是:
//Heres where you set the scale of your buttons and your table
Camera secondaryCamera = new Camera(Gdx.graphics.getWidth() * scale,
Gdx.graphics.getHeight() * scale);
Stage stage = new Stage();
Table table = new Table();
ImageButton button = new ImageButton(drawableUp, drawableDown, drawableChecked);
table.setFillParent(true);
stage.getViewport().setCamera(secondaryCamera);
table.add(ImageButton);
stage.addActor(table);
当您将其用于触控时,这非常有用。您可以将表格用于整个用户界面,并根据自己的喜好进行缩放,与其他游戏项目无关;
答案 2 :(得分:0)
table.add(buttonMenu).width(100).height(100);
应该有效,您只需根据自己的喜好调整width
和height
参数,也可以使用setBounds
方法。这是一个例子:
TextButton myButton = new TextButton("Press Me", style);
myButton.setBounds(xCoordinate, yCoordinate, width, height);
答案 3 :(得分:0)
您可以在Drawable
中设置ButtonStyle
的尺寸,以调整Button
的尺寸:
float scale = 0.5f;
float currentHeight = textButtonStyle.up.getMinHeight();
textButtonStyle.up.setMinHeight(currentHeight * scale);
有关详细信息,请参阅official document for layout:
UI小部件不会设置自己的大小和位置。相反,父窗口小部件设置每个子项的大小和位置。 窗口小部件提供父级可以用作提示的最小,首选和最大大小。某些父窗口小部件(如表和容器)可以为如何调整子项的大小和位置提供约束。要在窗体中为窗口小部件指定特定大小,窗口小部件的最小,首选和最大大小将保持不变,并且在父窗口中设置大小约束。
您可以在source code中找到Button.getPrefHeight()
的实施:
public float getPrefHeight () {
float height = super.getPrefHeight();
if (style.up != null) height = Math.max(height, style.up.getMinHeight());
if (style.down != null) height = Math.max(height, style.down.getMinHeight());
if (style.checked != null) height = Math.max(height, style.checked.getMinHeight());
return height;
}