【问题标题】:Invalid Filepath on TmxMapLoader.load()TmxMapLoader.load() 上的文件路径无效
【发布时间】:2015-01-25 01:26:45
【问题描述】:

我正在关注关于如何使用LibGDX 制作 android(可能不是,但我希望具有兼容性)和 iOS 游戏的 youtube 教程,我在访问我的 res 文件夹中的 .tmx 文件时遇到了问题。

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

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

我在搜索方法中看到了该文件,但无论我输入什么似乎都找不到 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)

【问题讨论】:

    标签: android android-studio libgdx filepath


    【解决方案1】:

    测试一下,复制你游戏的asset,到Android项目的文件夹下,因为它是这样工作的,LibGDX,就是那个wiki的LibGDX,讲这个但是我不记得在哪里了,试着把文件夹内的文件 .tmx:

    AndroidProyect -> 资产 -> 地图 -> yourmap.tmx.

    并尝试调用它:

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

    在您的情况下,资源应位于 Asset Android 项目文件夹中。而我们的代码将在项目完成“Core”中。

    【讨论】:

    • 非常感谢天使。我觉得好傻我一直认为我没有具体说明文件路径,但实际上我太具体了。我在核心中创建了自己的 res 文件夹,并一直尝试引用它(com/mac/elevator/core/res)或其他自制条目大约一个小时,但您的简单解决方案有效。
    猜你喜欢
    • 2017-07-26
    • 2013-05-17
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2015-04-09
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多