1
public PImage[] images;
public static File[] wallTiles = loadFolder("data/tiles/walls");
public static File[] floorTiles = loadFolder("data/tiles/floors");
public static int totalFiles = wallTiles.length+floorTiles.length;

private static File[] loadFolder(String string)
{
    File files = new File(string);

    File[] pngFiles = files.listFiles(new FilenameFilter()
    {
        public boolean accept(File directory, String fileName)
        {
            return fileName.endsWith(".png");
        };
    });
    return pngFiles;
}

totalFiles が割り当てられている 4 行目は、wallTiles が null であるため、常に失敗します。このクラス (Art と呼ばれる) の totalFiles を返したいので、作業中のゲームの壁や床のテクスチャをランダムに選択するなどのことができます。聞いてくれてありがとう。

4

2 に答える 2

1

API http://docs.oracle.com/javase/6/docs/api/java/io/File.html#listFiles()から

... この抽象パス名がディレクトリを示さない場合は null を返します ...

したがって、ディレクトリが存在するかどうか、およびファイルがあるかどうかを確認してください。

private static File[] loadFolder(String string)
{
    File files = new File(string);
    if(!files.exists() || !files.isDirectory()){
        System.out.println("Directory: "+string+" does not exists");       
        return new File[0];
    }

    File[] pngFiles = files.listFiles(new FilenameFilter()
    {
        public boolean accept(File directory, String fileName)
        {
            return fileName.endsWith(".png");
        };
    });
    return pngFiles;
}
于 2013-02-12T21:24:52.427 に答える
0

相対パスではなく、ディレクトリへの絶対パスを使用してみてください

public static File[] wallTiles = loadFolder("データ/タイル/壁");

->

public static File[] wallTiles = loadFolder("/whatever_path/data/tiles/walls");

于 2013-02-12T21:32:40.030 に答える