javafx - 没有 EntityFactory 有注解 @Spawns() 的方法
问题描述
我无法测试 TMX 功能。我想将一个简单的 TMX 文件加载到我的示例 FXGL 应用程序(JavaFX 游戏库)中。有任何想法吗?
错误:
10:52:31.888 [FXGL 后台线程 4] WARN TMXLevelLoader - TiledMap 从 1.7.2 生成。支持的版本:1.2.3。某些特征可能无法完全解析。10:52:32.001 [FXGL 背景线程 4] WARN TMXLevelLoader - 解析错误 java.lang.IllegalArgumentException:没有 EntityFactory 在 com.almasb.fxgl.entity/com.almasb.fxgl.entity.GameWorld 有一个注解 @Spawns() 的方法.create(GameWorld.kt:413) at com.almasb.fxgl.entity/com.almasb.fxgl.entity.level.tiled.TMXLevelLoader.createObjectLayerEntities(TMXLevelLoader.kt:132) at 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。
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
没有方法 annotated @Spawns("")
,因此出现错误。
推荐阅读
- javascript - 无法使用 javascript 读取 python 生成的 JSON
- r - 尝试将 2.5 gb csv 文件读入 R 时出错
- python - 用相同的颜色绘制每个集群
- informatica - 支持 Informatica 集成分配步骤中的可选参数
- excel - 配置模块
- html - 可以在 css 文件中设置 contenteditable 吗?
- swift - 如何使用 2 个 Swift 协议创建观察者模式,其中两个关联类型必须相同?
- java - logback-spring.xml 中的 LogstashTcpSocketAppender 不会将日志发送到 ELK 但适用于基于 Java 的方法
- oracle-apex - 交互式报表中的列标题
- excel - 如果命令 Application.run 不应该能够打开工作簿,为什么引用的工作簿打开两次?