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 为空。我想返回这个类(称为 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("data/tiles/walls");

->

公共静态文件[] wallTiles = loadFolder("/whatever_path/data/tiles/walls");

于 2013-02-12T21:32:40.030 回答