Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java json用户皮肤中没有使用name:selection注册的可绘制、NinePatch、TextureRegion、Texture或Sprite?_Java_Libgdx - Fatal编程技术网

Java json用户皮肤中没有使用name:selection注册的可绘制、NinePatch、TextureRegion、Texture或Sprite?

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: {

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

在本教程中: uiskin.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
线程“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(不管它是什么)。