- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试创建一个带有在 json 文件中定义的皮肤的文本按钮。我是 libgdx 的初学者,所以问题可能出在显示器和键盘之间;)我希望你能帮助我。
LibGDX 版本:Fresh Git-Pull(2012 年 11 月 20 日)
我的 json(位于“data/button.json”):
{
resources: {
com.badlogic.gdx.graphics.Color: {
white: { r: 1, g: 1, b: 1, a: 1 },
downFontColor: { r: 1, g: 0.1, b: 0.2, a: 1 }
},
com.badlogic.gdx.graphics.g2d.BitmapFont: {
default-font: { file: default.fnt }
}
},
styles: {
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: {
font: default-font,
downFontColor: downFontColor,
fontColor: white
}
}
}
}
失败的地方:
Skin skin = new Skin(Gdx.files.internal("data/button.json"));
异常:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:72)
at eu.loecken.tools.virtuallampsi.screens.MenuScreen.createButton(MenuScreen.java:105)
at eu.loecken.tools.virtuallampsi.screens.MenuScreen.create(MenuScreen.java:47)
at eu.loecken.tools.virtuallampsi.screens.MenuScreen.show(MenuScreen.java:131)
at com.badlogic.gdx.Game.setScreen(Game.java:62)
at eu.loecken.tools.virtuallampsi.MainGame.create(MainGame.java:48)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:125)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: data/button.json
at com.badlogic.gdx.utils.Json.fromJson(Json.java:596)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:93)
... 8 more
Caused by: com.badlogic.gdx.utils.SerializationException:
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:424)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:1)
at com.badlogic.gdx.utils.Json.readValue(Json.java:762)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:409)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:594)
... 9 more
Caused by: java.lang.ClassNotFoundException: resources
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:422)
... 13 more
*没有 json 文件的工作代码:*(只是为了表明某些东西有效)
Texture texture = new Texture(Gdx.files.internal(imageURL));
textures.add(texture);
TextureRegion image = new TextureRegion(texture);
TextureRegion flippedImage = new TextureRegion(image);
flippedImage.flip(true, true);
ButtonStyle style = new ButtonStyle();
style.up = new TextureRegionDrawable(image);
style.down = new TextureRegionDrawable(flippedImage);
return new Button(style);
更新:这个也在工作:
private final BitmapFont defaultFont = new BitmapFont(
Gdx.files.internal("data/default.fnt"), false);
private final Texture btnTexture = new Texture(
Gdx.files.internal("buttons/lvl.png"));
private Button createButton(String text) {
// Initialize skin
// Skin skin = new Skin(Gdx.files.internal("data/button.json"));
TextureRegion image = new TextureRegion(btnTexture);
TextureRegion flippedImage = new TextureRegion(image);
flippedImage.flip(true, true);
TextButtonStyle style = new TextButtonStyle();
style.up = new TextureRegionDrawable(image);
style.down = new TextureRegionDrawable(flippedImage);
style.font = defaultFont;
return new TextButton(text, style);
}
最佳答案
根据 Skin docs,您的 json 文件应该是这样的
{
className: {
name: resource,
...
},
className: {
name: resource,
...
},
...
}
如您所见,您得到了异常,因为它寻找“资源”类..因此,只需将其更改为上面的模板即可:
{
com.badlogic.gdx.graphics.Color: {
white: { r: 1, g: 1, b: 1, a: 1 },
red: { r: 1, g: 0, b: 0, a: 1 },
yellow: { r: 0.5, g: 0.5, b: 0, a: 1 },
},
com.badlogic.gdx.graphics.g2d.BitmapFont: {
medium: { file: default.fnt }
},
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: {
down: button, up: button,
font: medium, fontColor: white
},
green: {
down: button, up: button,
font: medium, fontColor: { r: 0, g: 1, b: 0, a: 1 }
}
}
P.S按钮是真实的图片资源我也很确定你的皮肤 json 文件模板适用于旧版本的 libgdx
关于java.lang.ClassNotFoundException : resources? 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13480268/
我的应用在尝试访问外部依赖项时遇到 NoClassDefFoundError,但仅限于作为 jar 运行时。 使用 Intellij,我有一个带有主类的简单应用程序,其中包含一些对外部依赖项(例如 s
我收到以下异常: java.lang.ClassNotFoundException: org.jboss.resteasy.plugins.server.servlet.ResteasyBootstr
我正在尝试使用eclipse和tomcat调试solr4.6源代码。我收到错误消息:HTTP 状态 500 - {msg=SolrCore 'collection1' 由于初始化失败而不可用:[sch
我是新来的,很抱歉我的英语不好;)。 我尝试使用以下代码在 java 中加载插件 jar: package testprogramm; import java.io.File; import java
我重新安装了 ADT Bundle,因为我在更新 eclipse 后遇到了一些问题。 现在,当我想测试我的应用程序时,出现以下异常: 06-05 10:33:35.770: E/AndroidRunt
我浏览过现有的帖子,这些帖子处理在 Eclipse 中的 Tomcat 下运行 Java Web 应用程序的 ClassNotFoundException。 我无法提供源代码和配置 Artifact
我忙于我的应用一个多星期,突然: 11-12 07:59:17.860 1653-1653/nl.test.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: ma
我的应用程序有问题,昨天一切正常,但今天我更新了 sdk,现在当我尝试运行我的应用程序时,出现这样的错误 05-21 00:14:19.285: W/dalvikvm(7061): Unable t
我正在阅读 JPA docs在 Spring ,我正在尝试重组我的代码。 我现在所拥有的: BrewerRepository @Repository public class BrewerReposi
我想像 BalusC's example 一样实现 fileUpload . 不幸的是,我已经在努力声明 servlet。 Extensions Filter javax.faces
在某些机器上运行这个小程序不起作用,但在其他机器上它工作得很好。在所有情况下看起来都安装了 JRE 1.6.0_26。 var attributes = {codebase:'http://kas
我将跟随这个非常简单的教程(http://www.tutorialspoint.com/hadoop/hadoop_mapreduce.htm)一起学习,直到我尝试运行Java文件为止,一切运行良好。
我看到了帖子,并按照流程进行了操作。但这没有用。 ClassNotFoundException, while running example job of Hadoop 请帮助我。 创建的 mapre
我尝试在cloudera quickstart vm上为hadoop运行Mahout Kmeans示例。我在这里读link to clouudera block和这里stack overflow po
我有一个mapreduce程序,其中我使用Hcatalog从Hive表'A'中获取带有HcatInputFormat的详细信息,对其进行处理,然后使用HcatOutput格式将其写回到Hive表'B'
我是激发应用程序编程的新手,因此在这里为这个基本的编程而苦苦挣扎。 我有 scala ide 并附加了来自最新 hadoop 和 spark 发行版的相关 jar 文件。我正在使用的只有一个基本的 s
我正在尝试在本地模式下运行Spark示例,但是正在获取以下堆栈跟踪: Exception in thread "main" java.lang.NoClassDefFoundError: org/ap
我有以下代码: // Test TODO remove try { System.out.println(System.getProperties().getPrope
我有以下文件: src/my_proj/myns.clj: (ns my-proj.myns) (defrecord MyRecord [a b c]) 测试/my_proj/myns_test.c
我试图让应用程序动态加载某些类,然后调用启动方法,但问题是,由于 ClassLoader 不同,一个类无法调用另一个类的方法,但是正如我已经用 google 搜索的那样,我用父类创建了两个类加载器。这
我是一名优秀的程序员,十分优秀!