libGDX 从字符串加载平铺地图

libGDX load tiled map from string

我目前正在从资产文件夹中加载我的平铺地图。

TiledMap tileMap = new TmxMapLoader().load("assets/level1.tmx");

但我想做一些像当天的水平。 是否可以从字符串加载平铺地图?

字符串将是 .tmx 文件的内容。

示例http://pastebin.com/WpV90Hma

最简单的方法可能是使用内容创建(临时)FileHandle 并使用它来加载地图。

默认情况下 TmxMapLoader 将使用 InternalFileHandleResolver。这行不通,因为您无法在运行时创建内部文件。

这就是为什么您会改为使用 ExternalFileHandleResolver 作为地图加载器,创建一个外部文件并将当天的地图作为字符串写入其中。

String mapOfTheDay = ...;
FileHandle mapOfTheDayFile = Gdx.files.external("mygame/mapoftheday.tmx");
mapOfTheDayFile.writeString(mapOfTheDay, false);
TiledMap tileMap = new TmxMapLoader(new ExternalFileHandleResolver()).load("mygame/mapoftheday.tmx");

从 TmxLoader 继承和重写方法,我能够从 XML 字符串加载地图:http://pastebin.com/gQHQv6eV

!!但是 !!,这是 非常 蹩脚的,只加载真正基础的 TMX 文件。它可以继续加载复杂的TMX,但我暂时不需要它。

TMX 引用的文件(tilesets...)必须在您的应用程序工作目录中。