我在测试TMX特性时遇到了麻烦。我想加载一个简单的TMX文件到我的样本FXGL应用程序(JavaFX游戏库)。什么好主意吗?
错误:
10:52:31.888 [FXGL后台线程4]WARN TMXLevelLoader -从1.7.2生成的TiledMap。支持版本:1.2.3。一些功能可能无法完全解析。10:52:32.001 [FXGL后台线程4]警告解析错误java.lang.IllegalArgumentException:没有EntityFactory有@Spawns()注释的方法com.almasb.fxgl.entity/com.almasb.fxgl.entity.GameWorld.create (GameWorld.kt: 413)在com.almasb.fxgl.entity/com.almasb.fxgl.entity.level.tiled.TMXLevelLoader.createObjectLayerEntities (TMXLevelLoader.kt: 132)在com.almasb.fxgl.entity/com.almasb.fxgl.entity.level.tiled.TMXLevelLoader.load (TMXLevelLoader.kt: 50)在com.almasb.fxgl.all/com.almasb.fxgl.app.services.FXGLAssetLoaderService.loadLevel (FXGLAssetLoaderService.kt: 446)在com.almasb.fxgl.all/com.almasb.fxgl.dsl.FXGL Companion.setLevelFromMap美元(FXGL.kt: 521)在com.almasb.fxgl.all/com.almasb.fxgl.dsl.FXGL.setLevelFromMap (FXGL.kt)
TMX:
<objectgroup id="2" name="Object Layer 1">
<object id="2" name="tree" x="513.036" y="352.019" width="63.2967" height="64.4072"/>
</objectgroup>
应用程序:
@Override
protected void initGameVars(Map<String, Object> context) {
FXGL.getGameWorld().addEntityFactory(new SimpleEntityFactory());
}
@Override
protected void initGame() {
FXGL.setLevelFromMap("level01.tmx");
}
工厂:public class SimpleEntityFactory implements EntityFactory {
@Spawns("tree")
public Entity newTree(SpawnData data) {
return FXGL.entityBuilder(data).view(new Circle(8, Color.BLUE)).build();
}
}
我猜在.tmx文件中,创建的对象没有类型,因此它的类型是""
——空字符串。您的工厂SimpleEntityFactory
没有注释@Spawns("")
的方法,因此出现错误。