Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 平铺贴图编辑器导出Libgdx_Java_Exception_Libgdx - Fatal编程技术网

Java 平铺贴图编辑器导出Libgdx

Java 平铺贴图编辑器导出Libgdx,java,exception,libgdx,Java,Exception,Libgdx,我在导出平铺贴图文件时遇到问题。 我创建了地图,并推荐了一个教程,我导出了tmx文件并将其导入到Eclipse项目资产中。 在代码中,我这样做: tiledMap = new TmxMapLoader().load("map.tmx"); tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap); 我的问题是,当我执行它时,我得到: Exception in thread "LWJGL Application" com.badlog

我在导出平铺贴图文件时遇到问题。 我创建了地图,并推荐了一个教程,我导出了tmx文件并将其导入到Eclipse项目资产中。 在代码中,我这样做:

tiledMap = new TmxMapLoader().load("map.tmx");
tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap);
我的问题是,当我执行它时,我得到:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: tileset 2/grass-tiles-2-small.png
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
    at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
    at com.badlogic.gdx.graphics.Texture.load(Texture.java:130)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:121)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:100)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:96)
    at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:116)
    at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:101)
    at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:43)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: tileset 2/grass-tiles-2-small.png (Internal)
    at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
    at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:220)
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)
线程“LWJGL应用程序”com.badlogic.gdx.utils.GdxRuntimeException中的异常:无法加载文件:tileset 2/grass-tiles-2-small.png 在com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:140) 在com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)上 位于com.badlogic.gdx.graphics.Texture.load(Texture.java:130) 位于com.badlogic.gdx.graphics.Texture.(Texture.java:121) 位于com.badlogic.gdx.graphics.Texture.(Texture.java:100) 位于com.badlogic.gdx.graphics.Texture.(Texture.java:96) 位于com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:116) 位于com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:101) 在com.mygdx.game.MyGdxGame.create上(MyGdxGame.java:43) 位于com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136) 位于com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114) 原因:com.badlogic.gdx.utils.GdxRuntimeException:未找到文件:tileset 2/grass-tiles-2-small.png(内部) 位于com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136) 位于com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:220) 位于com.badlogic.gdx.graphics.Pixmap.(Pixmap.java:137)
我该如何修复它?

正如我在libgdxwiki中看到的,有两个选项可以加载tmx文件。确保您的文件位于“资产”文件夹下。你可以从中看到。在中也有类似的问题。

平铺正在
.tmx
文件中引用其平铺集图像源。因此,您使用的tileset
grass-tiles-2-small.png
未嵌入的,并且也必须加载。幸运的是,这是通过为您解析映像依赖项自动完成的

因此,除了
map.tmx
之外,您还必须通过将所有使用过的图像文件复制到您的资产文件夹中来确保可以访问它们。它必须是这样的:
assets/tileset 2/grass-tiles-2-small.png
。在这样做之后刷新Eclipse项目,以防它没有注意到


如果您已经这样做了,那么问题的另一个根源可能是目录名中的空白。尝试将
tileset 2
重命名为
tileset_2
并创建一个新的
.tmx
文件。

它只是无法加载纹理
grass-tiles-2-small.png
。我通常打开
TMX/XML
文件,并手动将tilesheet的文件名设置为仅包含文件名,而不包含路径

例如:

TMX只是在同一个文件夹中查找要使用的正确纹理,因为我们没有在TMX/xml中指定路径

想法:
我真的很讨厌
LibGDX
default
TmxLoader
。这将适用于非常简单的事情,但当精灵重叠时,您无法对深度进行排序,因为绘制的唯一方法是立即绘制一个完整的层。如果您需要在播放器上进行重叠,则需要能够逐个平铺/对象逐个对象绘制平铺。我为平铺贴图编写了自己的
XML
解析器,它的简单程度让我吃惊。我有一个相当复杂的映射,只需要大约30行代码就可以将所有内容加载到一个数组中,准备在
LibGDX

“无法加载文件”,所以首先要检查的是该文件是否位于代码所期望的位置。我无法确定找不到哪个文件。在项目中,我插入了tmx文件,没有其他内容。你不能吗?第一行提到的那一个呢?我的意思不是说我不知道是哪个文件,而是我不知道从哪里得到这个文件。我只导出tmx文件,但该文件丢失了,我不知道它是什么
<tileset firstgid="1" name="grass" tilewidth="32" tileheight="32">
  <image source="grass-tiles-2-small.png" width="256" height="256"/>
 </tileset>
tiledMap = new TmxMapLoader().load(Gdx.files.internal("yourmap.tmx"));