Java json用户皮肤中没有使用name:selection注册的可绘制、NinePatch、TextureRegion、Texture或Sprite?
我正在尝试用JSON设置UI的样式 在本教程中: uiskin.json不适合我。我删除了所有其他我不需要的样式,这是我的实际皮肤代码: uiskin.json:Java json用户皮肤中没有使用name:selection注册的可绘制、NinePatch、TextureRegion、Texture或Sprite?,java,libgdx,Java,Libgdx,我正在尝试用JSON设置UI的样式 在本教程中: uiskin.json不适合我。我删除了所有其他我不需要的样式,这是我的实际皮肤代码: uiskin.json: { com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: AlanDen50.fnt } }, com.badlogic.gdx.graphics.Color: {
{
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
线程“LWJGL应用程序”com.badlogic.gdx.utils.SerializationException中的异常:读取文件时出错:data/uiskin.json
位于com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:96)
位于com.badlogic.gdx.scenes.scene2d.ui.Skin.(Skin.java:73)
在com.me.dunbar.MenuScreen.show上(MenuScreen.java:43)
在com.badlogic.gdx.Game.setScreen上(Game.java:62)
在com.me.dunbar.DunBarGame.switchScreen上(DunBarGame.java:32)
在com.me.dunbar.DunBarGame.create上(DunBarGame.java:16)
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
原因:com.badlogic.gdx.utils.SerializationException:读取文件:data/uiskin.json时出错
位于com.badlogic.gdx.utils.Json.fromJson(Json.java:658)
位于com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:94)
... 还有7个
原因:com.badlogic.gdx.utils.SerializationException:序列化跟踪:
选择(com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle)
位于com.badlogic.gdx.utils.Json.readFields(Json.java:758)
位于com.badlogic.gdx.utils.Json.readValue(Json.java:861)
位于com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:411)
位于com.badlogic.gdx.utils.Json.readValue(Json.java:805)
位于com.badlogic.gdx.scenes.scene2d.ui.Skin$2.readNamedObjects(Skin.java:432)
位于com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:421)
位于com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:417)
位于com.badlogic.gdx.utils.Json.readValue(Json.java:835)
位于com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:411)
位于com.badlogic.gdx.utils.Json.fromJson(Json.java:656)
... 8个以上
原因:com.badlogic.gdx.utils.GdxRuntimeException:未使用名称:selection注册可绘制、NinePatch、TextureRegion、Texture或Sprite
位于com.badlogic.gdx.scenes.scene2d.ui.Skin.getDrawable(Skin.java:284)
位于com.badlogic.gdx.scenes.scene2d.ui.Skin.get(Skin.java:132)
位于com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:410)
位于com.badlogic.gdx.utils.Json.readFields(Json.java:751)
... 还有17个
现在,如果我从json中删除'selection'和'cursor',应用程序将运行,但我看不到任何文本字段
我使用的是gdx nightly build(2013年12月22日),但即使在0.9.9稳定版中也不起作用。发生此错误的原因是您尚未注册名为
selection
的纹理TextFieldStyle
要求选择
字段保存用户选择某些文本时应绘制的纹理
要注册此类纹理,请执行以下操作:
skin.addRegions(someAtlasTexture)
显然,地图集应该包含这样的区域。另外,您应该定义
TextFieldStyle
(通常是9-patch区域)的background
字段来查看文本字段的角。Ok,但当您这样做时:Skin Skin=new Skin(Gdx.files.internal(“data/uiskin.json”)),这就是崩溃发生的地方。似乎没有办法添加纹理ABCXYZ(不管它是什么)。