2012-04-29 63 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文件夾?),然後指定相應的路徑。