java slick无法加载tmx tilemaps

时间:2012-04-29 18:02:41

标签: java slick2d

我刚开始使用Slick2D,并了解加载tilemap并显示它是多么简单。我尝试了来自众多示例的十几个不同的tmx文件,看看它是否是被破坏的实际文件。每次我收到此错误:

Exception in thread "main" java.lang.RuntimeException: Resource not found: data/maps/desert.tmx
    at org.newdawn.slick.util.ResourceLoader.getResourceAsStream(ResourceLoader.java:69)
    at org.newdawn.slick.tiled.TiledMap.<init>(TiledMap.java:101)
    at game.Game.init(Game.java:17)
    at game.Tunneler.initStatesList(Tunneler.java:37)
    at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:164)
    at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390)
    at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314)
    at game.Tunneler.main(Tunneler.java:29)

这是我的游戏课程:

package game;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
import org.newdawn.slick.tiled.TiledMap;

public class Game extends BasicGameState{
    private int stateID = -1;
    private TiledMap map = null;

    public Game(int stateID){
        this.stateID = stateID;
    }
    public void init(GameContainer container, StateBasedGame game) throws SlickException{
        map = new TiledMap("data/maps/desert.tmx","maps");//ERROR
    }
    public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException{
        //map.render(0,0);
    }
    public void update(GameContainer container, StateBasedGame game, int delta) throws SlickException{
    }

    public int getID(){return stateID;}
}

我试图看看是否有其他人有类似的问题,但没有发现任何事情。我能够加载其他文件,所以我不相信这是一个编译器问题。我的菜单类可以加载图像并显示它们。此外,文件路径是正确的。

如果您有任何可能帮我解决这个问题的提示,请告诉我。

1 个答案:

答案 0 :(得分:1)

这看起来像是“找不到文件”的问题。它基本上说它无法找到您指定的文件(读取:“资源”)。检查您的相对路径data/maps/desert.tmx并确保它正确。

如果这不起作用,请用绝对路径(来自文件系统的根目录)替换相对路径,仅用于测试,并查看是否有效。如果确实有效,那么你的相对路径应该有效,但是没有正确指定。我看到的一个最常见的问题是在查找资源时不会 up 几个文件夹。例如,您的正确相对路径可能是../../data/maps/desert.tmx,也可能是这些路线上的某些路径。您需要确定您的代码在哪个文件夹中执行(可能是bin文件夹?),并指定相对路径。