gpt4 book ai didi

java - 没有以名称 : selection in json user skin? 注册的 Drawable、NinePatch、TextureRegion、Texture 或 Sprite

转载 作者:太空宇宙 更新时间:2023-11-04 15:17:37 25 4
gpt4 key购买 nike

我正在尝试使用 JSON 设置 UI 的样式。

在本教程中:http://www.gamefromscratch.com/post/2013/12/18/LibGDX-Tutorial-9-Scene2D-Part-3-UI-Skins.aspxuiskin.json 对我不起作用。我删除了所有不需要的其他样式,这是我实际的皮肤代码:

uiskin.json:

{
com.badlogic.gdx.graphics.g2d.BitmapFont: {
default-font: {
file: AlanDen50.fnt
}
},
com.badlogic.gdx.graphics.Color: {
green: {
a: 1,
b: 0,
g: 1,
r: 0
},
blue: {
a: 1,
b: 1,
g: 0,
r: 0
},
white: {
a: 1,
b: 1,
g: 1,
r: 1
},
red: {
a: 1,
b: 0,
g: 0,
r: 1
},
black: {
a: 1,
b: 0,
g: 0,
r: 0
}
},
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: {
font: default-font,
fontColor: blue,
downFontColor: red
}
},
com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
default: {
font: default-font,
fontColor: blue
}
},
com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: {
default: {
selection: selection,
font: default-font,
fontColor: blue,
cursor: cursor
}
}
}

这是 PlayScreen.java:

    Skin skin = new Skin(Gdx.files.internal("data/uiskin.json"));

TextField inpName = new TextField("Nome", skin);
inpName.setBounds(300, 200, 200, 40);

我得到的错误是:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: data/uiskin.json
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:96)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:73)
at com.me.dunbar.MenuScreen.show(MenuScreen.java:43)
at com.badlogic.gdx.Game.setScreen(Game.java:62)
at com.me.dunbar.DunBarGame.switchScreen(DunBarGame.java:32)
at com.me.dunbar.DunBarGame.create(DunBarGame.java:16)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/uiskin.json
at com.badlogic.gdx.utils.Json.fromJson(Json.java:658)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:94)
... 7 more
Caused by: com.badlogic.gdx.utils.SerializationException: Serialization trace:
selection (com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle)
at com.badlogic.gdx.utils.Json.readFields(Json.java:758)
at com.badlogic.gdx.utils.Json.readValue(Json.java:861)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:411)
at com.badlogic.gdx.utils.Json.readValue(Json.java:805)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.readNamedObjects(Skin.java:432)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:421)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:417)
at com.badlogic.gdx.utils.Json.readValue(Json.java:835)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:411)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:656)
... 8 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: No Drawable, NinePatch, TextureRegion, Texture, or Sprite registered with name: selection
at com.badlogic.gdx.scenes.scene2d.ui.Skin.getDrawable(Skin.java:284)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.get(Skin.java:132)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:410)
at com.badlogic.gdx.utils.Json.readFields(Json.java:751)
... 17 more

现在,如果我从 json 中删除“选择”和“光标”,应用程序会运行,但我看不到任何文本字段!

我正在使用 gdx nightly build(2013 年 12 月 22 日),但即使在 0.9.9 稳定版中也无法正常工作。

最佳答案

出现此错误是因为您尚未注册名为selection的纹理。 TextFieldStyle 需要 selection 字段来保存用户选择某些文本时应绘制的纹理。

要注册这样的纹理,只需这样做:

skin.addRegions(someAtlasTexture)

显然,图集应该包含这样的区域。另外,您应该定义 TextFieldStylebackground 字段(通常是 9 block 区域)以查看文本字段角。

关于java - 没有以名称 : selection in json user skin? 注册的 Drawable、NinePatch、TextureRegion、Texture 或 Sprite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20735000/

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