libGDX 从字符串加载平铺地图
libGDX load tiled map from string
我目前正在从资产文件夹中加载我的平铺地图。
TiledMap tileMap = new TmxMapLoader().load("assets/level1.tmx");
但我想做一些像当天的水平。
是否可以从字符串加载平铺地图?
字符串将是 .tmx 文件的内容。
最简单的方法可能是使用内容创建(临时)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...)必须在您的应用程序工作目录中。
我目前正在从资产文件夹中加载我的平铺地图。
TiledMap tileMap = new TmxMapLoader().load("assets/level1.tmx");
但我想做一些像当天的水平。 是否可以从字符串加载平铺地图?
字符串将是 .tmx 文件的内容。
最简单的方法可能是使用内容创建(临时)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...)必须在您的应用程序工作目录中。