如何创建Scene2d标签?

时间:2016-07-07 14:51:01

标签: 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框架,当我创建一个atlas文件时,我只使用LIbgdx纹理包装器将一组纹理组合在一起。

1 个答案:

答案 0 :(得分:1)

所以,让我们从头开始:

  • Json文件

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

    JSON正在使用{}:个符号,所有内容都保留为文本。例如:

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

    可以将其解析为某个Person类对象,也可以使用某些键进行访问(类似伪代码中的number = person[address][number]

  • 字体

    要定义字体,您需要.fnt文件(例如使用Hiero生成)。 Libgdx正在使用BitmapFonts - 使用代码渲染字体(您可以将其视为关于纹理贴图)。有一些方法可以直接使用像.ttf这样的字体文件,但一般来说,如果你不需要

  • ,这不是一个好主意。
  • <强>皮肤

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

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

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

    2。使用定义创建适当的JSON文件(看一下教程)

    3。将 .atlas .png .skin 文件命名为相同 - 所以你会有类似的东西:skin.atlas,skin.json, skin.png

    请注意,Skin JSON不是传统的JSON - 它没有"个符号,因此您将拥有

    down: round-down, up: round,
    

    而不是

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

    同样round-downround是您地图集中的可绘制内容的名称

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

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