当前位置: 首页 > 知识库问答 >
问题:

读取文件skin.json libgdx时出错

袁青青
2023-03-14

我正在尝试创建一个游戏的主菜单,我的朋友和我正在尝试制作。我们使用Eclipse+LibGdx,我真的不知道我在做什么。我使用的是直接从的代码,我已经无法在任何博客/论坛/教程上找到任何帮助。(http://www.gamefromscratch.com/post/2015/02/03/libgdx-video-tutorial-scene2d-ui-widgets-layout-and-skins。

    package com.mygdx.game;
    import com.badlogic.gdx.ApplicationAdapter;
    import com.badlogic.gdx.Gdx;
    import com.badlogic.gdx.graphics.GL20;
    import com.badlogic.gdx.graphics.Texture;
    import com.badlogic.gdx.graphics.g2d.SpriteBatch;
    import com.badlogic.gdx.scenes.scene2d.InputEvent;
    import com.badlogic.gdx.scenes.scene2d.Stage;
    import com.badlogic.gdx.scenes.scene2d.ui.Dialog;
    import com.badlogic.gdx.scenes.scene2d.ui.Skin;
    import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
    import com.badlogic.gdx.scenes.scene2d.utils.ClickListener;
    import com.badlogic.gdx.utils.Timer; 
    import com.badlogic.gdx.utils.viewport.ScreenViewport;

    public class MyGdxGame extends ApplicationAdapter {
    private Skin skin;  
    private Stage stage;

    @Override
    public void create () {

    skin = new Skin(Gdx.files.internal("uiskin.json"));
    stage = new Stage(new ScreenViewport());

    final TextButton button = new TextButton("Click Me",skin,"default");
    button.setWidth(200);
    button.setHeight(50);

    final Dialog dialog = new Dialog("Click Message",skin);

    button.addListener(new ClickListener(){
       @Override
       public void clicked(InputEvent event, float x, float y) {
          dialog.show(stage);
          Timer.schedule(new Timer.Task() {
             @Override
             public void run() {
                dialog.hide();
             }
          }, 10);
       }
    });
    stage.addActor(button);

    Gdx.input.setInputProcessor(stage);
 }

     @Override
     public void render () {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    stage.act(Gdx.graphics.getDeltaTime());
    stage.draw();

 }

     public static void main(String[] args)
     {;}
}

uiskin.json文件:

    {
     com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: Razer.fnt     } },
      com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
      default: { down: default-round-down, up: default-round, font: default-font     },
      },

    com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
    default:  {
    titleFont: default-font
         }
       }
    }

DesktoPlauncher:

    package com.mygdx.game.desktop;

    import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
    import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
    import com.mygdx.game.MyGdxGame;

    public class DesktopLauncher {
        public static void main (String[] arg) {
            LwjglApplicationConfiguration config = new       LwjglApplicationConfiguration();
        new LwjglApplication(new MyGdxGame(), config);
    }
}

错误:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: uiskin.json
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:97)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.(Skin.java:74)
    at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:26)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: uiskin.json
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:694)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
    ... 4 more
Caused by: com.badlogic.gdx.utils.SerializationException: Font file not found: Razer.fnt
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$3.read(Skin.java:452)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$3.read(Skin.java:443)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:408)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:852)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.readNamedObjects(Skin.java:429)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:418)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:414)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:408)
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:692)
    ... 5 more

多谢了。在我的脑海里,我完全迷失了方向,在我最后的手段。很抱歉我在这篇文章中犯的任何错误!!

-教育署

共有1个答案

廖琪
2023-03-14

这个错误基本上是说皮肤JSON有问题。

虽然格式看起来很好,但我认为StackTrace中还有更多的格式。请查看Razer.fnt的路径。

如果这还不能解决问题,请在这里粘贴完整的StackTrace。

 类似资料:
  • 我试图读取CSV文件,但它抛出了一个错误。我无法理解我的语法有什么问题,或者我是否需要向我的read_csv添加更多属性。 我试了一下这个解决办法 UnicodeDecodeError:“utf-8”编解码器无法解码位置21中的字节0x96:起始字节也无效。但它不起作用 [错误] UnicodeDecodeError回溯(最近一次调用)pandas/_libs/解析器。大熊猫中的pyx_图书馆。解

  • 我在apache Spark中读取本地文件时出错。scala>val f=sc.textfile(“/home/cloudera/downloads/sample.txt”)

  • Scala文件 src.main.scala包 }} 这只是一个示例Helloworld程序

  • 需要帮助修复此错误。我试图打印出字符串国家名称的数组长度。 我从一个简历文件阅读,我一直得到上面的错误。下面是我的代码: 下面是我的TestCSV类文件: 我的csv文件如下所示:这是一个摘要,因为我不想打印出全部252个国家。基本上,我把252个国家的数据存储在一个字符串数组中,年份存储在一个整数数组中,每个国家的蜂窝数据统计数据存储在一个二维双数组中。我是编程新手,我想知道我的方向是否正确,如

  • 我试图读取xsd文件以验证模式。 我的架构位于位置 我的类读取这个文件也在< code > x/y/z/read schema . Java 中 它们都装在我的罐子里。 我试图在中读取这个文件,如下所示,其中名称是但url返回为null? 我做错什么了吗?

  • 我已经尝试了几种建议的方法来解决这个java持久性异常,但还没有成功。如果有任何建议或帮助,将不胜感激。 以下是详细信息 --初始化数据库连接——javax。坚持不懈PersistenceException:[PersistenceUnit:NG]读取JPA XML文件时出错:META-INF/SQLQueries。org上的xml。冬眠ejb。ejb3配置。addClassesToSession