Tmx MapLoader.load()上的文件路径无效

时间:2015-01-25 01:26:45

标签: android android-studio libgdx filepath

我正在关注如何使用LibGDX创建一个android(可能不是我希望兼容性)和iOS游戏的youtube教程,我遇到了从res文件夹访问.tmx文件的问题。

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

使用上面的代码我认为应用程序会在我的res文件夹中找到我的.tmx文件,但我必须提供有关如何查找我在另一个选项卡中打开的文件的错误信息。这是通过按两次shift来调用的搜索方法的屏幕截图。 http://imgur.com/PYd9Y5T

screenshot of the search method called by hitting shift twice

我在搜索方法中看到了该文件,但无论我输入什么内容我都找不到level1.tmx

 01-24 20:14:01.717  10013-10040/com.mac.elevator.android E/AndroidRuntime﹕ FATAL EXCEPTION: GLThread 60898
    Process: com.mac.elevator.android, PID: 10013
    com.badlogic.gdx.utils.SerializationException: Error parsing file: res/level1.tmx
            at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:83)
            at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:92)
            at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:80)
            at com.mac.elevator.com.mac.elevator.states.Play.<init>(Play.java:91)
            at com.mac.elevator.handlers.GameStateManager.getState(GameStateManager.java:35)
            at com.mac.elevator.handlers.GameStateManager.pushState(GameStateManager.java:45)
            at com.mac.elevator.handlers.GameStateManager.<init>(GameStateManager.java:22)
            at com.mac.elevator.Game.create(Game.java:46)
            at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:241)
            at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1521)
            at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1249)
     Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: res/level1.tmx (Internal)
            at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:77)
            at com.badlogic.gdx.files.FileHandle.reader(FileHandle.java:163)
            at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:81)
            at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:92)
            at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:80)
            at com.mac.elevator.com.mac.elevator.states.Play.<init>(Play.java:91)
            at com.mac.elevator.handlers.GameStateManager.getState(GameStateManager.java:35)
            at com.mac.elevator.handlers.GameStateManager.pushState(GameStateManager.java:45)
            at com.mac.elevator.handlers.GameStateManager.<init>(GameStateManager.java:22)
            at com.mac.elevator.Game.create(Game.java:46)
            at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:241)
            at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1521)
            at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1249)
     Caused by: java.io.FileNotFoundException: res/level1.tmx
            at android.content.res.AssetManager.openAsset(Native Method)
            at android.content.res.AssetManager.open(AssetManager.java:316)
            at android.content.res.AssetManager.open(AssetManager.java:290)
            at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:75)

1 个答案:

答案 0 :(得分:0)

测试一下,复制你游戏的资产,转到Android项目的文件夹,因为它是如何工作的,LibGDX,就是维基LibGDX,谈论这个但是我不记得在哪里,试着把它放到文件夹中的.tmx文件:

  

AndroidProyect - &gt;资产 - &gt;地图 - &gt; yourmap.tmx。

并尝试调用它:

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

在您的情况下,资源应该放在Asset Android项目文件夹中。虽然我们的代码将在项目完成“核心”。