2016-12-12 15 views
0

LibGDXで実装されているTexturePackerを使用してスプライトを読み込みます。 しかし、ファイルが見つかり、それが私にこの例外を与えていないいくつかの理由について:テクスチャパッカーがスプライトを見つけられないのはなぜですか?

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 
} 

私はまた別のプロジェクトではEXACT同じコードを持って、それはうまく動作します。私はまだプロジェクトのプロパティの違いを発見していない。

+0

入力スプライトをC:\ Users \ Kontor \ Desktop \ Codeporn \ LibGDX-workspace \ OneRoom \ desktop \ sprites \ inputにコピーしましたか? – Hllink

+0

作業ディレクトリは、実行コンフィギュレーションで 'sprites /'を含むディレクトリに設定する必要があります。 – Tenfour04

答えて

0

スプライトが実際にそのディレクトリに存在することを確認してください。

私は同じ問題を抱えていましたが、自分のデスクトッププロジェクトのアセットディレクトリが、実際には自分のコアプロジェクトのアセットフォルダへの参照にすぎない「リンク先フォルダ」であると誤解されていました。だから、フォルダがそこにあり、問題はないはずですが、Windowsのファイルエクスプローラを見れば、ファイルがその場所に実際には存在していないことが明らかです。

私の修正は、入力と出力をステップバックして、デスクトップではなくコアディレクトリをチェックするように変更することでした。

ので、代わりの:

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

次のように動作します:

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

今、私はあなたの正確なセットアップを知っているが、あなたのコードを考慮すると、私はことを賭けだろう、別のプロジェクトで動作しません。他のプロジェクトでは、デスクトップディレクトリに実際に格納されているアセットがあります。アセットはコアディレクトリにイメージが格納されています。

関連する問題