Этот вопрос был поднят ранее, и я искал многие ответы. Он всегда заканчивается на «Вы хотите getResourceAsStream». Это не то, что я ищу.
Моя проблема заключается в том, что для игрового объекта я использую структуру папок, чтобы сохранить полосы спрайтов, а не иметь один большой спрайт. В результате:
Медиа /
Название характера/
AnimationName /
image.extension
программный объект просто хранит свою папку в виде строки, и я передаю URL-адрес getResource () объекту, чтобы заполнить карту изображений. может быть {n} число каталогов AnimationName / sub. Моя ошибка исходит из этого кода:
dir = new File(s.toURI());
Я беру каталог, вызываю listFiles и передаю найденные имена файлов загрузчику спрайтов. Вот фрагмент кода:
dir = new File(s.toURI());
File[] chld = dir.listFiles();
//get a list of files in the image/character folder
for(File f:chld)
{
//get a list of the files for each dir
File[] grandChild = f.listFiles();
for(File t:grandChild)
{
String fname = t.getAbsolutePath();
System.out.println(fname);
String temp = fname;
temp = temp.substring(temp.lastIndexOf("/") + 1,temp.lastIndexOf("."));
String animName = temp.replaceAll("\\d*$", "");
int numPics = 0;
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher(temp);
while(m.find()){
numPics = Integer.parseInt(m.group());
}
System.out.println("animation name: " + animName);
System.out.println("file name: " + fname);
System.out.println("number of pictures: " + numPics);
Animations.put(animName, sl.loadStripImageArray(fname, numPics));
}
}
Извините за плохое именование и временные переменные, они все еще работают.
sl - загрузчик спрайтов, а Animations - хэш-карта. Это работает нормально, пока я не упакую проект. Я не хочу писать кучу сложного кода, который работает, только если у меня есть JAR-файл, а не когда я работаю в NetBeans с исходными папками.
Я рассмотрел наличие папки с данными приложения, но я хотел бы остаться с пакетом jar, если смогу.