使用 libgdx 进行scene2d 按钮缩放

scene2d button scaling with libgdx(使用 libgdx 进行scene2d 按钮缩放)
本文介绍了使用 libgdx 进行scene2d 按钮缩放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道是不是只有我一个人,但 drawables 让我感到困惑.他们是打算保持给定的大小,还是有办法在其中缩放图像?我知道他们可以使用 Ninepatch 通过拉伸图像来填充某些区域,但我想缩放它拉伸的图像.我正在使用 TextButton对于我的菜单按钮,但它们太大了,我很想知道如何缩放它们.我正在从地图集中检索皮肤,其中包含九个补丁图像.这是设置屏幕:这是我正在使用的包中的图像:下面是 TextureAtlas 和 Skin 的初始化:

I don't know if it is just me, but drawables confuse me. Are they intended to keep the size they are given, or is there a way to scale the image within them? I understand they can use ninepatch to fill certain areas by stretching an image, but I want to scale the image that it stretches. I am using a TextButton for my menu buttons, but they are way too big, and I would love to know how to scale them. I am retrieving the skin from an atlas, which has ninepatch images in it. Here is the settings screen: Here are the images in the pack I am using: Here is the initialization of the TextureAtlas, and Skin:

buttonAtlas = new TextureAtlas(Gdx.files.internal("buttons/buttons.pack"));
buttonSkin = new Skin(buttonAtlas); 

这是该菜单按钮的初始化.

Here is the initialization of that menu button.

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);
    }
});

也许我可以改变我把它放在桌子上的方式,或者我把桌子放在舞台上的方式?

And perhaps I could change how I put it in the table, or how I put the table in the stage?

table.add(buttonMenu).width(Gdx.graphics.getWidth()/4);
stage.addActor(table);

作为最后的手段,我想我可以尝试创建自己的可以缩放的文本按钮 actor,感谢您抽出宝贵时间.

As a last resort I suppose I could attempt creating my own text button actor that I could scale, thank you for your time.

推荐答案

首先,如果你知道你的图片太大:最好将图片本身缩放到更小的尺寸,然后使用 TexturePacker 生成包含较小图像的新 TextureAtlas.

First of all if you know that your images are too big: The best would be to scale the images themselves to a smaller size and then use the TexturePacker too generate a new TextureAtlas that contain the smaller images.

如果你真的想的话,你可以用 TableLayout 来缩放图片按钮,看例子:

Anyhow you can scale the image button with the TableLayout if you really want to, see example:

table.add(buttonMenu).width(100).height(100);

这篇关于使用 libgdx 进行scene2d 按钮缩放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How to target newer versions in .gitlab-ci.yml using auto devops (java 11 instead of 8 and Android 31 instead of 29)(如何在.gitlab-ci.yml中使用自动开发工具(Java 11而不是8,Android 31而不是29)瞄准较新的版本)
Android + coreLibraryDesugaring: which Java 11 APIs can I expect to work?(Android+core LibraryDesugering:我可以期待哪些Java 11API能够工作?)
How to render something in an if statement React Native(如何在If语句中呈现某些内容Reaction Native)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)
Get an event when UIBarButtonItem menu is displayed(显示UIBarButtonItem菜单时获取事件)
iOS: Send multiple actions to a bar button(IOS:向一个栏按钮发送多个动作)