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