libgdx AssetManager无法仅在html5上加载资源

时间:2016-09-21 20:21:15

标签: java html5 gwt libgdx

我有一个libgdx项目,它使用AssetManager加载资源,如下所示:

    for (FileHandle f : Gdx.files.internal("textures").list("png") ) {
        assetManager.load(f.toString(), Texture.class);
        System.out.println("Asset queued for loading: " + f.toString());
    }
    assetManager.finishLoading();
    System.out.println("Loaded assets: " + assetManager.getLoadedAssets());

当我运行桌面启动器时,这很好用,但是当我使用以下消息将其部署到html5时失败:

GwtApplication: exception: Asset not loaded: textures/rifleman_walking.png
Asset not loaded: textures/rifleman_walking.png

我已经加倍检查了文件名,只是为了确保没有像我这样的错误那样愚蠢的东西。我也有点因为它似乎只影响html5版本而被抛弃了。当我查看项目webroot中的assets /目录时,它确实包含代码中引用的所有内容。

请注意,在AssetManager加载纹理之前,我的代码适用于桌面和html5,而不是通过硬编码文件名手动加载纹理。

我的理论:

  • 可能性1:由于某种原因,AssetManager无法加载纹理。
  • 可能性2:在html5中加载时,AssetManager不会阻止

当我忘记包含assetManager.finishLoading();时,我对完全相同的文件得到完全相同的错误,因此我想知道是否有关于需要解决方法的html5部署的特殊内容。< / p>

此外,我有大量的调试信息,我只是通过System.out.println()打印,我很乐意在Gwt文本区域看到这个,现在只在启动时打印错误。如何在同一窗口中启用System.out.println()的输出?

阅读后,我发现在核心启动器中调用Gdx.app.setLogLevel(Application.LOG_INFO);是可行的方法,但它似乎没有改变任何东西。如果我能够看到我打印的内容,它将有助于调试很多。

修改 违规行是:

protected Texture getAssetTexture(String textureName) {
    return world.getPainter().getAssetManager().get(textureName, Texture.class);
}

我已经检查过textureName被正确引用:文件rifleman_walking.png位于资产的textures子文件夹中。

1 个答案:

答案 0 :(得分:1)

AFAIK,LibGDX在以HTML模式启动之前预先加载所有资源(因为在JS中无法同步访问图像)。所以我的猜测(没有看到实际的代码)是你试图在LibGDX准备好之前加载资产。

不要让我开始使用GWT中的System.out.println()。查看调试输出最简单的方法是调用相应的LibGDX日志函数。

相关问题