0

while trying to test physcis body editor loader (BodyEditorLoader.java) from here

i get this improper casting, below is the function

private Model readJson(String str) {
    Model m = new Model();
    OrderedMap<String,?> rootElem 
    = (OrderedMap<String,?>) new JsonReader().parse(str);  //this line has casting problem

    Array<?> bodiesElems = (Array<?>) rootElem.get("rigidBodies");

    for (int i=0; i<bodiesElems.size; i++) {
        OrderedMap<String,?> bodyElem = (OrderedMap<String,?>) bodiesElems.get(i);
        RigidBodyModel rbModel = readRigidBody(bodyElem);
        m.rigidBodies.put(rbModel.name, rbModel);
    }

    return m;
}
4

2 回答 2

3

因为新版本的 libgdx 确实支持 Jsonvalue 并且有了这个帮助

 private Model readJson(String str) {
    Model m = new Model();

    JsonValue map = new JsonReader().parse(str);

    JsonValue bodyElem = map.getChild("rigidBodies");
    for (; bodyElem != null; bodyElem = bodyElem.next()) {
        RigidBodyModel rbModel = readRigidBody(bodyElem);
        m.rigidBodies.put(rbModel.name, rbModel);
    }

    return m;
}
于 2013-06-06T06:04:20.920 回答
2

parse方法返回一个JsonValue.

由于 Libgdx 的更新版本(包括对 JSON 代码的不向后兼容的更改),您可能会看到这种不匹配。请参阅包含以下内容的博客文章

只有读取 JSON 会受到影响。如果你使用 JsonReader,你会得到一个 JsonValue 而不是 OrderedMap。

您可以通过更新代码以使用 aJsonValue或降级到旧版本的 libgdx(4 月 25 日之前)来解决此问题。如果您使用的是 Libgdx 的夜间版本,请务必注意更改并跟上博客(大多数重大更改都在该博客上公布)。否则,坚持使用 Libgdx 的“已发布”版本可能更安全。

于 2013-06-06T03:26:22.947 回答