gpt4 book ai didi

java - LibGDX - 对话框标题不适合

转载 作者:搜寻专家 更新时间:2023-11-01 02:45:08 25 4
gpt4 key购买 nike

我成功地将我自己的字体添加到默认的 .json 文件并显示出来,但是我遇到了一些奇怪的大小问题。特别是当我尝试创建一个对话框时。这是它的样子:Sizes忽略说“和”的事实,如您所见,标题不适合,按钮似乎有点大......这就是我创建对话框的方式:

Dialog d = new Dialog("Error", RBResources.gameSkin);
d.add(new Label("You cannot continue and empty game.", RBResources.gameSkin));
TextButton b = new TextButton("Ok", RBResources.gameSkin);
d.button(b);
d.show(this);

这是皮肤的初始化方式:
gameSkin = new Skin(Gdx.files.internal("skins/uiskin.json"));

我添加字体所做的只是使用 Hiero 创建字体,将其添加到 .json 目录中,并将 BitmapFont 文件引用从“default.fnt”更改为“text.fnt”(文本就是我所说的字体) .

最佳答案

所以我一直在想的事情已经得到证实:对话框是用单个 NinePatch 构建的,因此您需要在 .atlas 文件和 .png 文件中手动调整标题栏的大小。

编辑
这基本上是一个如何在 LibGdx 教程中使用 JSON 文件的小知识。
LibGdx 有一个非常有用的类,叫做 Skin .它允许您拥有一个 .json 文件以及一个 .atlas 文件和 .png 图像,以非常轻松地定义用于制作 Button 的样式。 s, TextButton s, Dialog s 等。

LibgGdx 默认皮肤

  • JSON File
  • ATLAS File
  • ATLAS Image Pack
  • Font File
  • Font Image

  • JSON 文件的工作原理
    JSON 文件包含不同类类型及其参数的列表。在这个问题的情况下,我们将查看 Dialog风格。因为对话框是 Window 的子类它使用 WindowStyle (并非其他类的所有子类都这样做),因此我们必须查看 WindowStyle 的 JSON 文件。 .
    com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
    default: { titleFont: default-font, background: default-window, titleFontColor: white },
    dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim }
    },

    如您所见,dialog 是用于 Dialog 的样式类型。 s,而默认用于常规 Window s。大多数属性都是不言自明的,但您需要知道的是,字体始终在 JSON 文件中声明,位于顶部。您可以添加任意数量的字体,只需确保将字体的 .fnt 文件和 .png 图像包含在与 JSON 文件相同的文件夹中,并正确引用它们。您可以使用 BitmapFont 轻松制作字体像 Hiero 这样的生成器,可以在这里找到: https://github.com/libgdx/libgdx/wiki/Hiero .颜色也在 JSON 文件的顶部创建,就在字体下方。您可以根据需要创建任意数量。 stageBackground是显示对话框时将覆盖舞台其余部分的颜色。在这种情况下,它是 dialogDim定义为 TintedDrawable在 JSON 文件中。最后一个属性是对 ATLAS Image Pack 中图像的引用。

    ATLAS 文件的工作原理
    ATLAS 文件基本上是对 TextureRegion 的引用的集合。 s 在 ATLAS 图像包中。其中许多是不言自明的,其余的可以通过一些反复试验来理解,但现在我们将专注于对对话框片段的引用。 default-window ATLAS 文件中对这一位的引用:
    default-window
    rotate: false
    xy: 1, 20
    size: 27, 29
    split: 4, 3, 20, 3
    orig: 27, 29
    offset: 0, 0
    index: -1

    这些字段可能有点令人困惑,我也不完全了解它们,但您需要知道的是 rotate应该始终保持错误,除非您知道什么时候不应该。 xy是 x 和 y 位置,以 TextureRegion 的像素为单位在 ATLAS 图像包中。 size是 x 大小和 y 大小,以像素为单位。 split TextureRegion是怎么回事应该拆分(不适用于所有 ATLAS 引用),您可以在此处了解有关这些数字如何工作的更多信息: https://github.com/libgdx/libgdx/wiki/Ninepatches . orig据我所知,始终与 size 相同. offset应该始终保持在 0, 0 除非您有理由让该区域偏离 xy开始的位置。还有一个 index -1 表示该区域与其他区域位于同一 ATLAS 镜像包内。
    如何使用
    现在您可以轻松进行自己的修改。只需找到您要添加自己的样式,复制要更改的样式的语法(或直接更改默认值),为其添加您自己的名称,并添加您自己的 ATLAS 引用。在 ATLAS 文件和图像包中,您还可以添加自己的区域。您可能还可以为样式以外的不同类添加自己的属性,因为 Skin 类似乎是 JSON 读取器之上的轻量级包装器,可以轻松读取样式。
    我希望这一切都可以理解:)

    关于java - LibGDX - 对话框标题不适合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24315802/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com