java - 如何创建Scene2d标签?

标签 java json libgdx

我对如何创建 scene2d 标签感到困惑,因为它需要皮肤,我需要皮肤做什么?我只在这样的按钮上使用它们:

TextureAtlas btnAtlas = new TextureAtlas(Gdx.files.internal("myAtlas"));
Skin skin = new Skin(btnAtlas);
buttonStyle.up = skin.getDrawable("btnUP");

我很困惑,因为当我想到标签时,我想到的是字体和文本,而不是图集或皮肤。我在网上看到一些代码,他们使用的是 .json 文件而不是 .atlas 文件,这让我更加困惑,如何创建一个包含我想要使用的字体的 .json 文件?什么是 .json 文件?另外,我正在使用 Libgdx 框架,当我创建图集文件时,我只使用 LIbgdx 纹理打包程序将一组纹理放在一起。

最佳答案

所以让我们从头开始:

  • Json 文件

    JSON 是一种文本格式 - XML 的替代品。它看起来像 JavaScript 的对象表示法。 JSON 用于传输数据,也用于序列化对象 - LibGDX 已经提供了很好的 JSON 支持。

    JSON 正在使用 {}:标志和所有内容都以文本形式保存。示例:

    {
        "name" : "Mike",
        "city" : "London"
        "address" : {
            "road" : "Green",
            "number" : "5"
        }
    }
    

    它可以被解析为一些 Person类对象或使用某些键访问(如伪代码中的 number = person[address][number])

  • 字体

    要定义字体,您将需要 .fnt 文件(例如使用 Hiero 生成)。 Libgdx 使用 BitmapFonts - 带代码的渲染字体(您可以将其视为纹理图集)。有一些方法可以直接使用 .ttf 等字体文件,但通常如果您不需要这样做,这不是一个好主意

  • 皮肤

    Skin 是一个定义 Scene2D 实例的对象。您可以使用“外观”来描述您的按钮的外观或文本按钮的背景图形。您可以直接创建它(就像您已经做的那样 - 通过创建 new Skin() 实例并向其添加可绘制对象、样式...)或使用内部包含所有这些信息的 JSON 文件。

    JSON 文件正在解析为 Skin,现在您可以使用它。我可以推荐 this tutorial了解皮肤如何工作,但简而言之,步骤是:

    1 。使用 Scene2D UI 事物将使用的所有图形来创建 TextureAtlas(当然使用 TexturePacker)

    2 。创建带有定义的正确 JSON 文件(查看教程)

    3 。将 .atlas.png.skin 文件命名为相同 - 这样你就会得到类似:skin.atlas、skin.json、皮肤.png

    请注意,Skin JSON 不是传统的 JSON - 它没有 "标志,这样你就会有

    down: round-down, up: round,
    

    而不是

    "down": "round-down", "up": "round",
    

    还有round-downround是您的图集中的可绘制对象的名称

<小时/>

当你拥有皮肤 JSON 时,你只需创建它的实例,然后通过提供皮肤实例和样式名称来创建按钮、标签等

    Button b = new Button(skin, "registerButton");

关于java - 如何创建Scene2d标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38248638/

相关文章:

java - 将父类成员仅限于其直接子类

java - 我们到底需要做什么才能通过 AMQP 从 Linux 上的 Java 客户端使用本地 Service Bus

javascript - 如何在 Jquery 中列出值

javascript - AngularJS $http.post 和 PHP

java - libgdx 中的输入事件在 Android 设备上无法同时工作

java - java中的碰撞在基于网格的碰撞系统中检测得不够快

java - 哪些周与哪些月份相关联?

java - microsoft graph - 一个驱动器中文件的权限信息 - 如何获取其他信息

c++ - 使用 JsonCPP 上的文本索引循环遍历 JSON 的所有项目

audio - 如何阻止音乐轨道在 Libgdx 中循环播放