0

Slick2D を使い始めたばかりで、タイルマップを読み込んで表示するのがいかに簡単かを学びました。破損したのが実際のファイルであるかどうかを確認するために、多数の例から少なくとも 12 の異なる 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;}
}

他の誰かが同様の問題を抱えているかどうかを確認しようとしましたが、何も見つかりませんでした. 他のファイルをロードできるので、コンパイラの問題ではないと思います。私のメニュークラスは、画像を読み込んで問題なく表示できます。また、ファイルパスは正しいです。

これを整理するのに役立つポインタがあれば教えてください。

4

1 に答える 1

1

これは「ファイルが見つからない」問題のようです。基本的に、指定したファイル (読み取り: "リソース") が見つからないということです。相対パスdata/maps/desert.tmxを確認し、正しいことを確認してください。

それが機能しない場合は、テスト用に相対パスを (ファイル システムのルートからの) 絶対パスに置き換えて、それが機能するかどうかを確認します。それが機能する場合、相対パスは機能するはずですが、正しく指定されていません。私が目にする最も一般的な問題の 1 つは、リソースを探すときにいくつかのフォルダーに移動しないことです。たとえば、おそらく正しい相対パスは../../data/maps/desert.tmx、またはそれらの行に沿ったものです。確かに、コードが実行されているフォルダー (おそらくbinフォルダー?) を特定し、そこからの相対パスを指定する必要があります。

于 2012-04-30T14:12:01.110 に答える