我在将libGDX项目部署到HTML时遇到了一些问题。我有一个skin.json文件来加载基本的GUI和字体。它在Android和桌面上运行完美,但在HTML中则不然。这是堆栈跟踪:
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中测试过它。和同样的错误。所以它与浏览器无关。游戏是在带有express的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文件中,我已指定将根据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的URI是默认值,但是我已经更改为其他人,但仍然会收到相同的错误。 (无法发布链接,因为我没有足够的声誉)
我使用gradlew.bat html:dist
编译项目,它在/ build / dist中生成了一些文件,这些文件是我用来为游戏服务的文件。
我认为这就是我所有的尝试,也许还有一些事情,但现在不记得了。我喜欢2天或3天。这是我用libGDX部署到HTML的时间。这是我的环境:
英语不是我的主要语言,所以如果有一些错别字,抱歉。
答案 0 :(得分:0)
将BitmapFont放在.json文件中引用的AssetManager中。
在资产管理器上使用finishLoading。 从AssetManager获取您的BitmapFont。
BitmapFont x= manager.get(".....", BitmapFont.class);
将该字体放入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));
答案 1 :(得分:0)
@AbhishekAryan是的,我试试并失败了。无论如何,谢谢你的回复。
我继续使用不同的方式加载BitmapFont进行测试,并始终因错误而失败。我开始认为这可能是libGDX的一个错误,确实是,我将libGDX更新为1.9.6-SNAPSHOT,问题解决了。我完全从我的uiskin.json加载了BitmapFont。