2012-04-29 37 views
0

我刚开始使用Slick2D,并了解到加载瓷砖地图并显示它的过程非常简单。我尝试了大量示例中的至少十几个不同的tmx文件,以查看它是否是已损坏的实际文件。每次我得到这个错误:java slick无法加载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

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

如果这不起作用,请使用绝对路径(从文件系统的根目录)替换相对路径,以便进行测试,然后查看是否有效。如果这确实起作用,那么你的相对路径应该可以工作,但只是没有正确指定。我看到的最常见问题之一是在寻找资源时不会去以上的几个文件夹。例如,也许正确的相对路径是../../data/maps/desert.tmx,或沿着这些线。您需要确定在哪个文件夹中执行代码(可能是bin文件夹?),然后指定相应的路径。