在android中将平铺贴图加载到libgdx中

在android中将平铺贴图加载到libgdx中,android,libgdx,tiled,Android,Libgdx,Tiled,我试图将平铺贴图加载到libgdx中。我遵循了很多不同的教程,并从头开始编写了很多教程。我使用“平铺”创建tmx文件,并使用android->asset文件夹中的平铺设置png。我还将工作目录设置为资产文件夹 public class PlayScreen implements Screen { private MarioBros game; private Hud hud; private OrthographicCamera gamecam; private

我试图将平铺贴图加载到libgdx中。我遵循了很多不同的教程,并从头开始编写了很多教程。我使用“平铺”创建tmx文件,并使用android->asset文件夹中的平铺设置png。我还将工作目录设置为资产文件夹

public class PlayScreen implements Screen {

    private MarioBros game;
    private Hud hud;
    private OrthographicCamera gamecam;
    private Viewport gamePort;

    private TmxMapLoader mapLoader;
    private TiledMap map;
    private OrthogonalTiledMapRenderer renderer;

    public PlayScreen(MarioBros game) {
        this.game = game;
        gamecam = new OrthographicCamera();
        gamePort = new FitViewport(MarioBros.V_WIDTH, MarioBros.V_HEIGHT, gamecam);
        hud = new Hud(game.batch);

        mapLoader = new TmxMapLoader();
        map = mapLoader.load("level1.tmx");
        renderer = new OrthogonalTiledMapRenderer(map);
        gamecam.position.set(gamePort.getScreenWidth()/2, gamePort.getScreenHeight()/2, 0);
    }
    @Override
    public void show() {

    }

    public void handleInput(float dt) {
        if (Gdx.input.isTouched())
            gamecam.position.x += 100 * dt;

    }
    public void update(float dt) {
        handleInput(dt);
        gamecam.update();
        renderer.setView(gamecam);
    }
    @Override
    public void render(float delta) {
        update(delta);
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        renderer.render();

        game.batch.setProjectionMatrix(hud.stage.getCamera().combined);
        hud.stage.draw();


    }

    @Override
    public void resize(int width, int height) {
        gamePort.update(width, height);

    }

    @Override
    public void pause() {

    }

    @Override
    public void resume() {

    }

    @Override
    public void hide() {

    }

    @Override
    public void dispose() {

    }
}
当我运行程序时,此错误消息不断出现:

> Task :desktop:DesktopLauncher.main()
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Unrecognised compression (zstd) for TMX Layer Data
    at com.badlogic.gdx.maps.tiled.BaseTmxMapLoader.getTileIds(BaseTmxMapLoader.java:495)
    at com.badlogic.gdx.maps.tiled.BaseTmxMapLoader.loadTileLayer(BaseTmxMapLoader.java:213)
    at com.badlogic.gdx.maps.tiled.BaseTmxMapLoader.loadLayer(BaseTmxMapLoader.java:172)
    at com.badlogic.gdx.maps.tiled.BaseTmxMapLoader.loadTiledMap(BaseTmxMapLoader.java:162)
    at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:81)
    at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:59)
    at com.mygdx.mariobros.Screens.PlayScreen.<init>(PlayScreen.java:35)
    at com.mygdx.mariobros.MarioBros.create(MarioBros.java:19)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:150)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:127)

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
>任务:桌面:DesktopLauncher.main()
线程“LWJGL应用程序”com.badlogic.gdx.utils.GdxRuntimeException中出现异常:TMX层数据的未识别压缩(zstd)
在com.badlogic.gdx.maps.tiled.BaseTmxMapLoader.getTileIds(BaseTmxMapLoader.java:495)
在com.badlogic.gdx.maps.tiled.BaseTmxMapLoader.loadtillelayer(BaseTmxMapLoader.java:213)
在com.badlogic.gdx.maps.tiled.BaseTmxMapLoader.loadLayer(BaseTmxMapLoader.java:172)
在com.badlogic.gdx.maps.tiled.BaseTmxMapLoader.loadTiledMap(BaseTmxMapLoader.java:162)
位于com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:81)
位于com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:59)
在com.mygdx.mariobros.Screens.PlayScreen.(PlayScreen.java:35)
在com.mygdx.mariobros.mariobros.create上(mariobros.java:19)
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:150)
位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:127)
此版本中使用了不推荐的Gradle功能,使其与Gradle 7.0不兼容。
使用“--warning mode all”显示单个弃用警告。

感谢您的帮助

问题在于
.tmx
文件的压缩。正如stacktrace所说,libGDX加载程序无法识别压缩zstd(尽管这似乎是平铺中的默认压缩)

要更改压缩类型,请执行以下操作:

  • 使用平铺打开
    .tmx
    文件
  • 在菜单栏中,单击地图属性…
  • 在左侧显示的地图属性中,更改
    平铺层格式的值
  • 在下拉列表中,您可以将压缩更改为不同于
    Base64(zStandard compressed)

在我的项目中,我刚刚尝试了
Base64(未压缩)
Base64(gzip压缩)
Base64(zlib压缩)
,它们似乎都在libGDX(1.9.10版)

中工作。问题是
.tmx
文件的压缩。正如stacktrace所说,libGDX加载程序无法识别压缩zstd(尽管这似乎是平铺中的默认压缩)

要更改压缩类型,请执行以下操作:

  • 使用平铺打开
    .tmx
    文件
  • 在菜单栏中,单击地图属性…
  • 在左侧显示的地图属性中,更改
    平铺层格式的值
  • 在下拉列表中,您可以将压缩更改为不同于
    Base64(zStandard compressed)
在我的项目中,我刚刚尝试了
Base64(未压缩)
Base64(gzip压缩)
Base64(zlib压缩)
,它们似乎都在libGDX(版本1.9.10)中工作