2017-02-10 12 views
0

У меня возникли проблемы с развертыванием проекта libGDX в HTML. У меня есть файл skin.json для загрузки основных графических интерфейсов и шрифтов. Он отлично работает на Android и Desktop, но в HTML он этого не делает. Вот StackTrace:[LibGDX] [GWT] Ошибка чтения файла skin.json в HTML [SerializationException]

Uncaught Error: java.lang.RuntimeException: com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.SerializationException: Error reading file: data/skins/logo_and_font/logo_and_font.json 
    at f_b.V$b [as jQ] (html-0.js:7370) 
    at f_b.Y$b [as lQ] (html-0.js:7370) 
    at f_b.b_b (html-0.js:5252) 
    at f_b (html-0.js:1161) 
    at Be (html-0.js:6955) 
    at Ge (html-0.js:6136) 
    at di (html-0.js:6583) 
    at wh.xh [as Oc] (html-0.js:7361) 
    at HTMLImageElement.eval (html-0.js:5881) 

Вот мой файл .json, что им пытаются нагрузки:

{ 
    "com.badlogic.gdx.graphics.Color":{ 
    "green":{"a":1, "b":0, "g":1, "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.graphics.g2d.BitmapFont":{ 
    "default-font":{ 
     "file":"basic_font.fnt" 
    } 
    }, 
    "com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle":{ 
    "default":{ 
     "font":"default-font", 
     "fontColor":"white" 
    } 
    } 
} 

Если я удалить код блока BitmatFont и LabelStyle он будет загружаться без каких-либо ошибок

"com.badlogic.gdx.graphics.g2d.BitmapFont":{ 
    "default-font":{ 
     "file":"basic_font.fnt" 
    } 
    }, 
    "com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle":{ 
    "default":{ 
     "font":"default-font", 
     "fontColor":"white" 
    } 
    } 

Я тестировал его в Opera, Google Chrome, Firefox и Internet Explorer. И та же ошибка. Поэтому его браузер не связан. Игра работает на сервере NodeJs с экспресс-памятью, но я также пытаюсь использовать ее с Apache (XAMPP) и той же проблемой, поэтому не думаю, что это связано с сервером. Я попытался с html: superDev и тоже проблема. Я удаляю кавычки из json-файла и ту же проблему.

Загрузите файл .json с помощью диспетчера активов, вот код, который я загружаю. Я загружаю его таким образом, заставляя им просто загружать основные вещи, необходимые для создания экрана загрузки, а затем загружать другие активы.

this.manager = new AssetManager(); 
this.assets = new ObjectMap<String, String>(); 

this.assets.put("logo_and_font_skin", "data/skins/logo_and_font/logo_and_font.json"); 
this.manager.load(this.assets.get("logo_and_font_skin"), Skin.class); 
this.manager.finishLoading(); 

Если я загрузить его непосредственно с Gdx.files.internal("data/skins/logo_and_font/logo_and_font.json"); я получаю ту же ошибку.

В моих * .gwt.xml файлов я определили класс, которые собираются быть отражены arcording в libGDX Wiki

<extend-configuration-property name="gdx.reflect.include" value="com.badlogic.gdx.graphics.g2d.BitmapFont"/> 
<extend-configuration-property name="gdx.reflect.include" value="com.badlogic.gdx.scenes.scene2d.ui.Label" /> 

УИР * .gwt.xml по умолчанию один, но у меня есть изменить на другие и по-прежнему получить ту же ошибку. (Не могу опубликовать ссылки, потому что у меня недостаточно репутации)

Я скомпилировал проект с помощью gradlew.bat html:dist, он сгенерировал некоторые файлы в/build/dist, и эти файлы являются тем, который я использую для обслуживания игры.

Я думаю, что все, что я попробовал, может быть, еще несколько вещей, но не помню сейчас. У меня есть 2 дня в этом или 3 дня. Это мое время для развертывания в HTML с помощью libGDX. Вот моя среда:

  • IDE: Android Studio 2.2.3
  • libGDX Версия: 1.9.5
  • Gradle Версия: 2.2.3
  • GWT Версия: 2.8.0
  • JDK: 1.8.0

Английский не является моим основным языком, поэтому, если есть какие-то опечатки, извините за это.

ответ

0

Поместите свой BitmapFont в свой AssetManager, на который ссылается ваш .json-файл.

Использовать finishLoading на менеджере активов. Получите ваш BitmapFont от AssetManager.

BitmapFont x= manager.get(".....", BitmapFont.class); 

Put, что шрифт в ObjectMap

ObjectMap<String, Object> font_map = new ObjectMap<String, Object>(); 
font_map.put("nameOfFont", x); 

Использование SkinLoader и передать вашу зависимость в качестве параметра.

manager.load(skinPath, Skin.class, new SkinLoader.SkinParameter(skinAtlas, font_map)); 
0

@AbhishekAryan Да, я пытаюсь это и терпеть неудачу тоже. Спасибо за ответ в любом случае.

Я продолжаю тестирование с помощью различных способов загрузки BitmapFont и всегда с ошибкой. И я начал думать, что, возможно, это была ошибка с libGDX, действительно, это было, я обновил libGDX до 1.9.6-SNAPSHOT, и проблема была решена. Я загрузил BitmapFont из моего uiskin.json отлично.

+0

хорошее, если вы найдете решение. Лучше найти проблему с версией 1.9.5 и создать проблему для github. – Aryan

 Смежные вопросы

  • Нет связанных вопросов^_^