2016-12-12 3 views
0

Я использую TexturePacker, реализованный LibGDX для загрузки спрайтов. По некоторым причинам однако, эти файлы не найдены, и это дает мне это исключение:Почему мой пакер текстур не находит спрайты?

Exception in thread "main" java.lang.RuntimeException: Error packing images. 
at com.badlogic.gdx.tools.texturepacker.TexturePacker.process(TexturePacker.java:620) 
at com.zebleck.OneRoom.desktop.DesktopLauncher.processSprites(DesktopLauncher.java:35) 
at com.zebleck.OneRoom.desktop.DesktopLauncher.main(DesktopLauncher.java:17) 
Caused by: java.lang.IllegalArgumentException: Input file does not exist: C:\Users\Kontor\Desktop\Codeporn\LibGDX-workspace\OneRoom\desktop\sprites\input 
at com.badlogic.gdx.tools.FileProcessor.process(FileProcessor.java:117) 
at com.badlogic.gdx.tools.texturepacker.TexturePackerFileProcessor.process(TexturePackerFileProcessor.java:70) 
at com.badlogic.gdx.tools.texturepacker.TexturePacker.process(TexturePacker.java:618) 
... 2 more 

Этот код вызывает ошибку:

public static void main (String[] arg) { 
    LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); 
    config.width = 800; 
    config.height = 800; 

    deleteFiles(); 
    processSprites(); 

    new LwjglApplication(new OneRoom(), config); 
} 

public static void deleteFiles() { 
    File outputDir = new File("../android/assets/sprites/output"); 
    File[] listFiles = outputDir.listFiles(); 
    if (listFiles != null && listFiles.length > 0) {     
     for (File file : listFiles) { 
      file.delete(); 
     } 
    } 
} 

public static void processSprites() { 
    TexturePacker.Settings settings = new TexturePacker.Settings(); 
    //System.out.println(Gdx.files.internal("sprites/input/player.png").toString()); 
    TexturePacker.process(settings, "sprites/input", "sprites/output", "pack"); // THIS LINE CAUSES THE ERROR 
} 

Я также получил точно такой же код в другом проекте и он работает отлично. Я еще не нашел различий в свойствах проекта.

+0

Вы скопировали свои спрайты справки в C: \ Users \ Kontor \ Desktop \ Codeporn \ LibGDX-workspace \ OneRoom \ desktop \ спрайты \ ввод? – Hllink

+0

Рабочий каталог должен быть установлен в том, который содержит 'спрайты /' в вашей конфигурации запуска. – Tenfour04

ответ

0

Убедитесь, что спрайты действительно существуют в этом каталоге.

Звучит покровительствовать, но у меня была такая же проблема, и для меня меня вводил в заблуждение мой каталог ресурсов в моем рабочем проекте, который был «Связанной папкой», которая была на самом деле просто ссылкой на папку с ресурсами моего основного проекта. Таким образом, в eclipse папка есть и выглядит так, как будто не должно быть никаких проблем, но, просматривая Windows Explorer, было ясно, что файлы фактически не существуют в этом месте.

Мое решение состояло в том, чтобы изменить ввод и вывод для возврата назад и проверить основной каталог вместо рабочего стола.

Таким образом, вместо:

TexturePacker.process(settings, "sprites/input", "sprites/output", "pack"); 

Следующая будет работать:

TexturePacker.process(settings, "../core/sprites/input", "../core/sprites/output", "pack"); 

Теперь я не знаю точное устройство, но с учетом кода работает в другом проекте, я готов держать пари, что другой проект имеет активы, фактически хранящиеся в каталоге рабочего стола, где он хранит изображения в основной директории.

Смежные вопросы